[英]Why isn't maven replacing the environment variable for the maven-release-plugin release version?
我正在尝试将maven-release-plugin与某些环境变量一起使用,但是当我将环境变量用于发行版时遇到问题。
我正在执行:
mvn release:clean --batch-mode -Dtag=${env.tag} -Dproject.rel.com.mycompany.project:project-root=${env.project.rel.com.mycompany.project:project-root} -Dproject.dev.com.mycompany.project:project-root=${env.project.dev.com.mycompany.project:project-root} release:prepare
我正进入(状态:
[错误]无法在项目project-root上执行目标org.apache.maven.plugins:maven-release-plugin:2.4:prepare(default-cli):解析版本错误,无法确定下一个版本:无法解析版本字符串:“” $ {env.project.rel.com.mycompany.project:project-root}“-> [帮助1]
如果将${env.project.rel.com.mycompany.project:project-root}
更改为特定版本,该命令将通过。
但正如您所看到的,我正在使用:
${env.tag}
${env.project.dev.com.mycompany.project:project-root}
没有问题。 这是错误吗? 还是我做错了什么?
附加说明 :
环境变量:
tag=2.55
project.rel.com.mycompany.project:project-root=2.55
project.dev.com.mycompany.project:project-root=2.56-SNAPSHOT
我的Maven版本是:
C:\>mvn -version
C:\>set MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=512m
Apache Maven 3.0.4 (r1232337; 2012-01-17 09:44:56+0100)
Maven home: C:\Users\John\Documents\apache-maven-3.0.4-bin
Java version: 1.6.0_25, vendor: Sun Microsystems Inc.
Java home: C:\JDK\jdk1.6.0_25\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
您将必须使用arguments属性: http : //maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html#arguments
因此,在您的上下文中,您的cmd行将如下所示(请注意双引号):
mvn release:clean --batch-mode release:prepare "-Darguments=-Dtag=${env.tag} -Dproject.rel.com.mycompany.project:project-root=${env.project.rel.com.mycompany.project:project-root} -Dproject.dev.com.mycompany.project:project-root=${env.project.dev.com.mycompany.project:project-root}"
此外,如果我没记错的话,令牌$ {env.X}的使用要求使用大写的属性名称(待验证)
它不起作用,因为发行插件清除了环境[1]。 我怀疑是有文献记载的[2],我是通过查看源发现的。 Farid的答案是一个很好的解决方法-它通过未清除的Java属性传递环境值。
我本来只是对Farid的回答发表评论的,但是SO认为我不够聪明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.