【发布时间】:2014-09-21 23:04:03
【问题描述】:
我有两个顶级 Maven 项目,backend 和 frontend,它们按照各自的进度推进版本。由于每个模块都有多个模块,我在父/聚合 POM 的 dependencyManagement 部分中定义我的依赖版本,并使用版本号属性。
我想用frontend 上的版本号干净地更新属性,最好是任意的,但我可以接受需要一个实时上游版本来匹配。我试过使用versions:update-property,但这个目标似乎完全不起作用;不管是否真的有匹配的上游版本,我都会得到这个调试输出:
$ mvn versions:update-property -Dproperty=frontend.version -DnewVersion=0.13.2 -DautoLinkItems=false -X
...
[DEBUG] Searching for properties associated with builders
[DEBUG] Property ${frontend.version}
[DEBUG] Property ${frontend.version}: Looks like this property is not associated with any dependency...
[DEBUG] Property ${frontend.version}: Set of valid available versions is [0.9.0, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.10.0, 0.10.1, 0.11.0, 0.12.0, 0.13.0, 0.13.1, 0.13.2, 0.13.3]
[DEBUG] Property ${frontend.version}: Restricting results to 0.13.2
[DEBUG] Property ${frontend.version}: Current winner is: null
[DEBUG] Property ${frontend.version}: Searching reactor for a valid version...
[DEBUG] Property ${frontend.version}: Set of valid available versions from the reactor is []
[INFO] Property ${frontend.version}: Leaving unchanged as 0.13.1
[INFO] ------------------------------------------------------------------------
我指定了-DautoLinkItems=false,这似乎没有效果; versions-maven-plugin 仍然扫描我所有的 POM 以查找匹配的依赖项,然后举手退出。我还尝试在插件配置中为该属性将searchReactor 设置为false。即使我明确表示要忽略它们,插件 (1) 似乎也错误地扫描了依赖项,并且 (2) 甚至过滤掉了明确的特定匹配项。
是否有一种简单的方法可以将 Maven 属性条目重写为特定值,或者强制 versions-maven-plugin 在不验证版本号的情况下执行我所说的操作,或者使用其他目标?我宁愿避免使用像 sed 这样不理解 XML 的工具(正如我在类似问题中看到的那样),但我会接受简单的 XPath 操作。
【问题讨论】:
-
您有没有找到可行的解决方案?我正在努力解决 update-property 实际上不更新属性的完全相同的问题
-
我遇到了与
versions:update-properties类似的问题,版本为 org.codehaus.mojo:versions-maven-plugin:2.2, 2.3 似乎解决了这个问题。
标签: maven pom.xml versions-maven-plugin