0

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

 -Build
       -Local
         -POM.xml (Master)

-Main Project
   -Module A 

-Libs Project
   -Libs Project A

Libs 项目 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 项目 com.myproject.libs:http:bundle:1.0.0

4

1 回答 1

2

立即停止

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

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

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

当您尝试在这些位置使用属性时,它似乎可以工作,换句话说,Maven 不会立即将您的脚踢掉....但是当您尝试在 Maven 上做任何进一步的事情时,它会友好地踢掉您的脚。

也许我们应该改变 Maven,让你一开始就大吃一惊……也许这会阻止人们认为在这些元素中添加属性扩展是受支持的。

于 2012-09-17T16:56:37.663 回答