我有两个顶级 Maven 项目,backend
并且frontend
,它们按照各自的进度推进版本。dependencyManagement
由于每个模块都有多个模块,我在父/聚合 POM的部分中定义我的依赖版本,并使用一个属性作为版本号。
我想用版本号干净地更新属性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 操作。