java - 为什么 maven 不替换 maven-release-plugin 发布版本的环境变量?

标签 java maven maven-3 maven-release-plugin

我正在尝试将 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

我得到:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4:prepare (default-cli) on project project-root: Error parsing version, cannot determine next version: Unable to parse the version string: "${env.project.rel.com.mycompany.project:project-root}" -> [Help 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"  

最佳答案

您必须使用参数属性: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}"

此外,如果我没记错的话,使用 token ${env.X} 需要使用大写的属性名称(待验证)

关于java - 为什么 maven 不替换 maven-release-plugin 发布版本的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17614336/

相关文章:

Java UDP服务器

maven - 通过 Maven 将 Mercurial 工作目录变更集 ID(例如(838cb9c0367e))注入(inject)属性文件?

spring - 如何在运行时将新用户添加到 Spring Security

maven-3 - 用于控制多个数据库的数据库管理系统更改的飞行路线位置

java - 参数值 [1] 与预期类型不匹配

java - 如何使用 Spring Integration 在 Ftp 和本地文件夹之间同步多个文件夹中的文件?

java - Maven 项目定义的存储库不起作用

java - 在 websphere 8.5.5.9 上初始化 Spring Boot

java - 将 Alfresco 扩展打包为 amp 和 jar 有什么区别?

java - 字符串应保持与 TextArea 类似的换行符