maven - 从命令行覆盖父 POM 中定义的 Maven 发布目标
问题描述
我需要运行替代发布目标,而不是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>
我试图覆盖这个 using-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代码不知道从哪里来的。
解决方案
推荐阅读
- node.js - 在生产中反应连接到没有端点的 API
- shell - 识别文件夹的构建类型
- azure - Azure Linux Webapp 的启动命令
- javascript - 如何将我的函数转换为变量以执行语句数组
- regex - 如何使用正则表达式从句子中删除以小写字母开头的单词
- reactjs - 动态变化的 ReactJS 常量(动态全局)
- python - 如何找到一个点的最近邻居和另一个不是最近邻居的点?
- python - 如何使用 seaborn 绘制多色图形?
- ios - SWIFT :- swift 中的通用链接不起作用
- javascript - Typescript - React/Redux 显示表格