两个不同的项目,在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 installcommon项目第一(和任何变更后,使他们“可见”)。

在开发过程中,通常的做法是在IDE中导入依赖项目,并将其配置为依赖项目内部的工作空间(vs二进制相关性)。这节省了install步骤以使更改可见。大多数IDE都支持这种方法。

+0

这就是我认为它会工作的方式,但我无法弄清楚如何参考通用项目,而不必将其作为父项目的一部分。有没有办法在依赖中使用相对路径?我需要在某个地方使用“../common”来告诉它项目在哪里,对吗? – jgor 2010-07-20 21:03:33

+0

@jgor:不,通过本地存储库解决依赖关系问题,您必须在common项目上运行'install'以将其安装在本地存储库中。 – 2010-07-20 21:14:47

+0

谢谢!我没有完全理解本地存储库的概念。我现在至少有一个简单的例子。 – jgor 2010-07-20 21:27:35