【问题标题】:How to resolve the parent POM of a dependency that uses the dynamic version如何解析使用动态版本的依赖项的父 POM
【发布时间】:2012-09-17 00:02:33
【问题描述】:

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

 -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

【问题讨论】:

    标签: maven


    【解决方案1】:

    现在停止

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 2020-07-12
      • 1970-01-01
      • 2013-05-29
      • 2014-01-24
      • 2020-11-07
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      相关资源
      最近更新 更多