作为deploy
的一部分,我需要运行替代的发行目标,而不是默认的release:perform
。我们公司范围内的上级POM在pluginManagement
下定义了以下内容:
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<releaseProfiles>release</releaseProfiles>
<goals>deploy</goals>
</configuration>
</plugin>
我正在尝试使用-Dgoals
选项覆盖它,但是maven忽略了它并运行deploy
。我尝试设置-DuseReleaseProfile=false
并更改-DreleaseProfiles
,但似乎都没有影响。我无法更改项目POM,因为我需要在CI框架的这一部分以及任意项目中进行此操作。对于不使用上述父POM的测试项目,我可以对其进行覆盖,因此似乎问题在于覆盖父POM的内容。我还有其他选择吗?
更新:
这是确切的命令行:mvn -X -e -nsu release:perform -Dgoals=install -DlocalCheckout=true -Darguments="-DadditionalJOption=-Xdoclint:none -DskipTests"
我用mvnDebug
而不是mvn
运行,并在org.apache.maven.plugins.release.PerformReleaseMojo.createGoals()
中放置了一个断点。当达到断点时,我检查了goals
的值:
main[1] stop in org.apache.maven.plugins.release.PerformReleaseMojo.createGoals
Deferring breakpoint org.apache.maven.plugins.release.PerformReleaseMojo.createGoals.
It will be set after the class is loaded.
main[1] run
> Set deferred breakpoint org.apache.maven.plugins.release.PerformReleaseMojo.createGoals
Breakpoint hit: "thread=main", org.apache.maven.plugins.release.PerformReleaseMojo.createGoals(), line=220 bci=0
main[1] print this.goals
this.goals = "deploy"
main[1] print java.lang.System.getProperty("goals")
java.lang.System.getProperty("goals") = "install"
在调用[createGoals][1]
时,必须已经注入了goals
,但是我不熟悉从哪里知道的maven代码。