两个不同的项目,在maven中有一个共享依赖项目
问题描述:
我有两个项目,“appA”和“appB”,每个项目都依赖于第三个项目“common”。我正在将它们从蚂蚁移动到maven,但我有一些困难找出最好的方法来做到这一点在maven中。我的文件夹结构如下所示:两个不同的项目,在maven中有一个共享依赖项目
root
+ common
+ appA
+ appB
我已经能够父母的pom.xml添加到根和有共同的,和的appA作为appB的这个父项目获得的appA和appB的打造模块,但这不是我想要的,因为appA和appB是完全不相关的项目,所以root pom.xml不合适。
我想要appA和appB是独立的maven项目,它们都依赖于第三个通用项目,并在必要时构建它,以便我可以进入appA或appB文件夹并键入“mvn package”分别建立appA + common或appB + common。这是我在Ant中设置的方式,但在maven中可能没有合适的平行。任何帮助或推动正确的方向是非常感谢:)
答
(...)但这不是我想要的,根pom.xml是不适当的,因为appA和appB是完全无关的项目。
那就不要做了,如果你不想和刚刚宣布common
如在appA
的POM的依赖,并在appB
的POM不使用聚合。事情是这样的:
<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都支持这种方法。
这就是我认为它会工作的方式,但我无法弄清楚如何参考通用项目,而不必将其作为父项目的一部分。有没有办法在依赖中使用相对路径?我需要在某个地方使用“../common”来告诉它项目在哪里,对吗? – jgor 2010-07-20 21:03:33
@jgor:不,通过本地存储库解决依赖关系问题,您必须在common项目上运行'install'以将其安装在本地存储库中。 – 2010-07-20 21:14:47
谢谢!我没有完全理解本地存储库的概念。我现在至少有一个简单的例子。 – jgor 2010-07-20 21:27:35