如何解析使用动态版本的依赖项的父POM

时间:2012-09-17 00:02:34

标签: maven

我正在构建一个多模块项目。项目结构如下:

 -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

1 个答案:

答案 0 :(得分:2)

立即停止

POM中有许多XPath位置,属性替换永远不会以任何可用的方式工作。

  • /project/parent/groupId
  • /project/parent/artifactId
  • /project/parent/version
  • /project/groupId
  • /project/artifactId
  • /project/version
  • /project/packaging

原因是反应堆的构建必须是确定性的。

当您尝试在这些位置使用属性时,似乎可以正常工作,换句话说,Maven不会立即开始射击....但是当您尝试在Maven上做任何事情时请你好好开枪。

也许我们应该改变Maven最初开枪...也许这会阻止人们认为将财产扩张放在这些元素中是支持的。