2013-07-12 31 views
1

我正在尝试对某些环境变量使用maven-release-plugin,但是当我为发布版本使用环境变量时遇到问题。
我执行:为什么maven不会替换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 

我越来越:

[错误]未能执行目标 org.apache.maven.plugins:行家释放小插件:2.4:准备 ( default-cli)project-root:解析版本时出错, 无法确定下一个版本:无法解析版本字符串: “$ {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}
没有问题。这是一个错误?或者我做错了什么?

其他注意事项
环境变量:
标签= 2.55
project.rel.com.mycompany.project:项目根= 2.55
project.dev.com.mycompany.project :项目根= 2.56-SNAPSHOT

C:> MVN -version
C:>设置MAVEN_OPTS = -Xmx1024m -XX:MaxPermSize参数=512米
的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版本:1.6.0_25,供应商:Sun Microsystems Inc 。
Java主页:C:\ JDK \ jdk1.6.0_25 \ jre的
默认的语言环境:en_US,则平台编码:
的Cp1252 OS 名称: “Windows 7的” 版本: “6.1”,拱: “AMD64”家人:“窗口”

回答

3

,你将不得不使用的参数属性: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需要

+0

1.此只给出了相同的结果MVN发布:清洁--batch模式释放:准备 2.“......在大写......”为什么$ {} env.tag工作然后? – despot

+0

现在已完全阅读您的原始文章,env.tag已正确解析,因为您已在环境中正确设置属性“标记”。其他人不是因为你已经在环境中设置了他们的“env”。前缀从环境属性中删除此前缀,但将其保留在命令行中。希望这将解决你的问题。 – Farid

+0

“env。”前缀“是我无意中从命令字符串复制的内容。我在帖子上做了一个修改。所以同样的问题再次站立。顺便说一句,谢谢你的尝试;) – despot

0

它不工作,因为释放在大写的属性名(待验证)的使用插件清除环境[1]。我怀疑这是记录[2],我通过查看来源发现。 Farid的答案是一个很好的解决方法 - 它通过未清除的java属性传递环境值。

我只是简单地评论了法里德的答案,但是因为我觉得我不够聪明。

  1. 为什么??
  2. 经典maven。
相关问题