Maven中具有共享依赖项目的两个不同项目
-
18-09-2020 - |
题
我有两个项目,"appA"和"appB",每个项目都依赖于第三个项目"common"。我正在将它们从ant移动到maven的过程中,但是我在弄清楚在maven中做到这一点的最佳方法时遇到了一些困难。我的文件夹结构如下所示:
root
+ common
+ appA
+ appB
我已经能够添加一个父pom。xml到根,并有common,appA和appB作为这个父项目的模块,以获得appA和appB构建,但这不是我想要的,一个根pom。xml是不合适的,因为appA和appB是完全不相关的项目。
我希望appA和appB是独立的maven项目,它们都依赖于第三个常见项目,并在必要时构建它,以便我可以进入appA或appB文件夹并键入"mvn package"分别构建appA+common或appB+common。这就是我如何在Ant中设置它,但在maven中可能没有适当的并行。任何帮助或轻推在正确的方向是极大的赞赏:)
解决方案
(...)但这不是我想要的,一个根pom。xml是不合适的,因为appA和appB是完全不相关的项目。
那就别做了,不想就别用聚合,直接声明就行了 common
作为pom中的依赖项 appA
而在POM appB
.像这样的事情:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>foo</groupId>
<artifactId>appA</artifactId>
<packaging>jar</packaging>
<version>X-SNAPSHOT</version>
...
<dependencies>
<dependency>
<groupId>bar</groupId><!-- at your discretion -->
<artifactId>common</artifactId>
<version>Y.Z-SNAPSHOT</version>
</dependency>
...
</dependencies>
...
</project>
依赖关系通过本地存储库解析,因此您必须 mvn install
该 common
首先项目(并在任何更改后使它们"可见")。
在开发过程中,常见的做法是在IDE中导入依赖项目,并将其配置为依赖于项目 里面 的工作区(vs二进制依赖关系)。这节省了 install
步骤以使更改可见。大多数Ide都支持这种方法。
不隶属于 StackOverflow