【发布时间】:2011-05-04 00:44:50
【问题描述】:
我有一个 Maven 项目,其中一个子项目 (A) 想要依赖另一个使用“pom”包装的子项目 (B)。
如果我以直接的方式执行此操作,其中 A 使用 <type>pom</type> 指定对 B 的依赖,如果我执行“mvn install”,则一切正常,但如果我在安装之前运行任何阶段,例如 mvn compile 或mvn package,然后它在尝试构建 A 时失败:它在存储库中寻找 B 的 pom,但没有找到。
我真的不希望这个 pom 在存储库中,因为它是我们活动源代码的一部分并且经常更改。
对于我们构建的所有 jar 打包项目,将它们排除在存储库之外似乎工作正常,使用 mvn package 构建,Maven 知道如何在源代码中查找所有依赖项并构建它管理的树而不诉诸存储库;但是对于 pom 打包的项目,它总是希望转到存储库。
我在试图理解这一点时学到了一些东西:
- Maven 最佳实践鼓励您use pom-packaged projects to group dependencies,但在 POM 项目中添加了“mvn install”步骤
- Maven lifecycle documentation 说“一个纯元数据的项目(打包值是 pom)只将目标绑定到安装和部署阶段”;也许这就是为什么除非我调用安装阶段,否则 POM 项目作为依赖目标是不可见的?我尝试将编译器插件绑定到编译阶段,但这似乎没有帮助。
有没有一种方法可以将 POM 子项目指定为同一父项目中另一个子项目的依赖项,而无需将 POM 项目安装到存储库?
【问题讨论】:
标签: maven