我正在构建一个多模块项目。项目结构如下:
-Build
-Local
-POM.xml (Master)
-Main Project
-Module A
-Libs Project
-Libs Project A
Libs Project A让POM拥有其父级POM的动态版本
<parent>
<groupId>com.myproject</groupId>
<artifactId>libs</artifactId>
<version>${release.version}</version>
</parent>
<!-- this POM -->
<groupId>com.myproject.libs</groupId>
<artifactId>http</artifactId>
<packaging>bundle</packaging>
<version>1.0.0</version>
当我运行maven build并传递version参数来构建“模块A”时,maven无法找到libs项目的POM。
原因:找不到父:com.myproject:项目的libs: com.myproject.libs:http:bundle:1.0.0 for project com.myproject.libs:HTTP:束:1.0.0
答案 0 :(得分:2)
立即停止
POM中有许多XPath位置,属性替换永远不会以任何可用的方式工作。
/project/parent/groupId
/project/parent/artifactId
/project/parent/version
/project/groupId
/project/artifactId
/project/version
/project/packaging
原因是反应堆的构建必须是确定性的。
当您尝试在这些位置使用属性时,似乎可以正常工作,换句话说,Maven不会立即开始射击....但是当您尝试在Maven上做任何事情时请你好好开枪。
也许我们应该改变Maven最初开枪...也许这会阻止人们认为将财产扩张放在这些元素中是支持的。