我们有一个Common
git存储库,其中包含父pom.xml
和一些模块。父pom.xml
看起来像这样(简化):
<modelVersion>4.0.0</modelVersion>
<groupId>group</groupId>
<artifactId>common</artifactId>
<packaging>pom</packaging>
<modules>
<!-- Utility classes -->
<module>utils</module>
<!-- Data transfer objects -->
<module>dto</module>
</modules>
</dependencyManagement>
<dependencies>
<dependency>
<!-- Version of the module -->
<groupId>group</groupId>
<artifactId>utils</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>
...
</dependencies>
</dependencyManagement>
dependencyManagement
用于在所有模块之间提供一致的版本控制。
现在,我们想在其他项目中使用Common
模块的一部分(每个都有自己的git存储库),并且仍然保留dependencyManagement
。因此,我们创建了一个ProjectX
存储库,并将Common
添加为git-submodule
。 ProjectX
具有以下pom.xml
(简体):
<parent>
<groupId>group</groupId>
<artifactId>common</artifactId>
<relativePath>../Common/pom.xml</relativePath>
</parent>
</dependencies>
<dependency>
<groupId>group</groupId>
<artifactId>utils</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
</dependency>
</dependencies>
这样,我们可以使用Common.utils
类并具有依赖项一致性。但是,在Common
的每次更新之后,我们必须调用:
mvn clean install
在Common git-submodule
的{{1}}中查找utils依赖项。
问题:
ProjectX pom.xml
命令可以集成到pom.xml中吗?答案 0 :(得分:0)
不幸的是,使用git子模块的构造。我不会这样做,这不是Maven的哲学。
我要分开两件事:
如果您需要多模块项目之外的模块之一,只需按照通常的方式将其声明为依赖项即可。
如果要在多模块项目和其他项目之间共享配置或dependencyManagement,请构造用于不同项目(无论它们是否为多模块)的父pom。