覆盖从命令行在父POM中定义的Maven发布目标

时间:2019-05-26 10:36:50

标签: maven maven-release-plugin

作为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代码。

0 个答案:

没有答案