我使用以下内容将newVersion propery格式化为外部文件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<!-- Read in newVersion.properties instead of newVersion property -->
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${session.executionRootDirectory}/newVersion.properties</file>
</files>
</configuration>
</execution>
</plugin>
我也在使用版本:设置为从CI版本设置新版本的代码。
如果我跑:
,这是有效的mvn -DBUILD_NUMBER=99 initialize versions:set
IOW,我需要明确指定“初始化”目标,否则它会停止并提示我输入newVersion,因为它默认运行版本:在初始化目标之前设置目标。
如何将初始化目标定义为版本的依赖关系:set goal?
IMO我不需要定义中间目标排序。
注意,我知道我可以使用版本插件来完成所有这些,但我需要从父gradle脚本管理gradle和maven版本,所以我需要基本的newVersion来自外部源,以便我可以使用它来自多个构建环境。
答案 0 :(得分:1)
重新mvn ... initialize ...
- 您将read-project-properties
的{{1}}目标限制在properties-maven-plugin
阶段,因此validate
就足够了。 (Introduction to the Build Lifecycle, Default Lifecycle)。
在没有任何阶段的情况下调用mvn validate
直接执行mvn ... versions:set
插件的set
目标,而不通过默认生命周期(任何阶段)。这意味着它“默认运行版本:在初始化之前设置目标”,它没有通过versions
阶段(initialize
是一个阶段根本不是目标)。
还有以下Versions Maven Plugin, Basic Usage:
Maven 2.0,2.1,2.2和3.0目前不支持在一次Maven调用中重新阅读
initialize
的修改。以下目标:
- 的版本:设置强>
- 的 ... 强>
修改
pom.xml
文件,您需要将这些目标与任何其他目标或生命周期阶段分开运行。
我不知道有任何方法可以将某个阶段定义为目标的依赖关系,但您可以声明:
pom.xml
- defaultGoal:如果没有给出,则执行默认目标或阶段。如果给出了目标,则应该在命令行中定义它(例如jar:jar)。如果定义了阶段(例如安装),情况也是如此。