我有两个项目,"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 installcommon 首先项目(并在任何更改后使它们"可见")。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top