是否可以将maven release插件与多模块项目一起使用,其中一些模块间依赖项是使用父pom中的参数指定的?
当我尝试呼叫释放时:准备我收到以下错误:
[错误]无法执行目标org.apache.maven.plugins:maven-release-plugin:2.1:prepare(default-cli)on project forest-parent:版本无法更新:$ {some.version } - > [帮助1]
这是我的插件定义:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.1</version>
<configuration>
<goals>deploy</goals>
<tagBase>https://svn.domain.com/svn/project/tags</tagBase>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>@{project.version}</tagNameFormat>
</configuration>
</plugin>
提前致谢!
答案 0 :(得分:3)
该插件目前不支持来自父级的参数化版本(也尝试过v2.2.2)。解决方案是使用{project.version}。
答案 1 :(得分:1)
TL; DR:接受的答案没有帮助; maven-release-plugin中的已知缺陷; maven 3.5中新的CI友好版本有所帮助(但并不能真正解决OP问题)
长版:
接受的答案无效。我进行了实验,发现@Dormouse评论的结果。添加此答案以获得更多说明:
在变量名前加上“项目”。获得Maven版本:准备克服原始错误,但会更新自定义版本模块的版本以匹配所有其他版本
因此,如@Dormouse所述,该属性无用,因为在第一次maven版本调用之后,该属性将不再引用模块的正确版本。
例如-演示的摘录:
父pom.xml:
<version>1.0-SNAPSHOT</version>
<properties>
<!-- note the custom property starts with "project" to pass release:prepare -->
<project.version.custom>1.2-SNAPSHOT</project.version.custom>
</properties>
<modules>
<module>custom-versioned-module</module>
<module>dependent-module</module>
</modules
custom-versioned-module / pom.xml:
<parent>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>custom-versioned-module</artifactId>
<!-- this module has 1.2-SNAPSHOT instead of 1.0-SNAPSHOT like the rest -->
<version>1.2-SNAPSHOT</version>
dependent-module / pom.xml
<parent>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>dependent-module</artifactId>
<dependencies>
<dependency>
<artifactId>custom-versioned-module</artifactId>
<!-- experiment with variable version -->
<version>${project.version.custom}</version>
</dependency>
</dependencies>
现在尝试mvn release:prepare -DdryRun=true
并检查创建的文件。 (您可以通过查看pom.xml.next来查看release:perform 将要执行的操作-如果不使用-DdryRun,则它将用于替换pom.xml)
您将看到版本 property 保持不变,依赖性也是如此(我们不希望maven-release-plugin陷入混乱),但是实际版本自定义版本模块的更改!
custom-versioned-module / pom.xml.next:
<parent>
<version>1.1-SNAPSHOT</version>
</parent>
<artifactId>custom-versioned-module</artifactId>
<version>1.1-SNAPSHOT</version>
父版本从1.0升级到1.1,但模块版本从1.2降低到1.1(只是简单地做到了相同,没有具体减少) >
同时该属性本身保持在1.2,因此,如果您实际发布,则下一个构建将失败。
请注意,这里记录为行家缺陷:https://issues.apache.org/jira/browse/MRELEASE-782
3.5版的CI友好版本在某种程度上减轻了它的负担: