Maven: компилировать внешние зависимости в pom.xml - PullRequest
0 голосов
/ 27 февраля 2019

У нас есть 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?
  • Есть ли лучший способ обработки зависимости подмодуля?

1 Ответ

0 голосов
/ 27 февраля 2019

Конструкция с подмодулем git неудачна.Я бы этого не делал, это не философия Maven.

Я бы выделил две вещи:

  • Если вам нужен один из модулей за пределами многомодульного проекта,просто объявите его как зависимость обычным способом.

  • Если вы хотите поделиться конфигурацией или dependencyManagement между многомодульным проектом и другими проектами, создайте родительский pom, который вы используете для различныхпроекты (могут быть многомодульными или нет).

...