Maven 2 两个不同的项目,在maven中有一个共享的依赖项目

Maven 2 两个不同的项目,在maven中有一个共享的依赖项目,maven-2,parent-child,projects,multiple-projects,Maven 2,Parent Child,Projects,Multiple Projects,我有两个项目“appA”和“appB”,每个项目都依赖于第三个项目“common”。我正在将它们从ant迁移到maven的过程中,但是我很难找到在maven中实现这一点的最佳方法。我的文件夹结构如下所示: root + common + appA + appB <project> <modelVersion>4.0.0</modelVersion> <groupId>foo</groupId> <arti

我有两个项目“appA”和“appB”,每个项目都依赖于第三个项目“common”。我正在将它们从ant迁移到maven的过程中,但是我很难找到在maven中实现这一点的最佳方法。我的文件夹结构如下所示:

root
+ common  
+ appA  
+ 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>
我已经能够将父pom.xml添加到根目录中,并将common、appA和appB作为父项目的模块来构建appA和appB,但这不是我想要的,根pom.xml不合适,因为appA和appB是完全不相关的项目

我希望appA和appB是独立的maven项目,它们都依赖于第三个公共项目,并在必要时构建它,这样我就可以进入appA或appB文件夹并键入“mvn package”分别构建appA+公共或appB+公共。这就是我在Ant中设置它的方式,但在maven中可能没有合适的并行。非常感谢您向正确方向提供的任何帮助或推动:)

(…)但这不是我想要的,根pom.xml是不合适的,因为appA和appB是完全不相关的项目

然后不要这样做,如果不想使用聚合,就不要使用聚合,只需在
appA
的POM和
appB
的POM中将
common
声明为依赖项。大概是这样的:

root
+ common  
+ appA  
+ 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>

4.0.0
福
阿帕
罐子
X快照
...
酒吧
常见的
Y.Z-快照
...
...
依赖项是通过本地存储库解决的,因此您必须首先安装
mvn
common项目(并在任何更改后使其“可见”)


在开发过程中,通常的做法是在IDE中导入依赖项目,并将它们配置为依赖于工作区内的项目(相对于二进制依赖项)。这将保存
安装
步骤以使更改可见。大多数IDE都支持这种方法。

这就是我认为它会起作用的方式,但我不知道如何引用公共项目,而不将其作为父项目的一部分。有没有一种方法可以在依赖项中使用相对路径?我需要在某个地方使用“./common”来告诉它该项目在哪里,对吗?@jgor:不,依赖项是通过本地存储库解决的,您必须在
common
项目上运行
install
,才能将其安装到本地存储库中。谢谢!我还没有完全掌握本地存储库的概念。我现在至少有一个简单的例子。