У нас есть 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
для ProjectX pom.xml
, чтобы найти зависимость utils.
Вопрос:
- Может ли команда
maven
быть интегрирована в pom.xml? - Есть ли лучший способ обработки зависимости подмодуля?