Maven: Объявление внутренних зависимостей в многомодульном проекте - PullRequest
1 голос
/ 23 января 2020

Я работаю над проектом со следующей архитектурой maven:

  • parent (pom)
    • модуль A (pom)
      • подмодуль A1 (jar)
      • подмодуль A2 (баночка)
    • модуль B (пом)
      • подмодуль B1 (банка)
      • подмодуль B2 (банка)

У родительского pom есть раздел dependencyManagement, объявляющий версию внешних зависимостей.

Сейчас как мне объявить внутренние зависимости?

B2 имеет зависимость от B1 и A2. У A2 есть зависимость от A1.

Мои параметры:

  • добавить зависимость с версией
<!-- Submodule B2 -->
<dependencies>
  <dependency>
    <groupId>com.app</groupId>
    <artifactId>submoduleA2</artifactId>
    <version>${project.version}</version>
  </dependency>
  [...]
</dependencies>
  • добавить все подмодули ( A1, A2, B1, B2) к dependencyManagement родительского pom с их версией, затем добавьте зависимости без версии в подмодули:
<!-- Parent -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.app</groupId>
      <artifactId>submoduleA2</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>
</dependencyManagement>

<!-- Submodule B2 -->
<dependencies>
  <dependency>
    <groupId>com.app</groupId>
    <artifactId>submoduleA2</artifactId>
  </dependency>
  [...]
</dependencies>
  • добавьте зависимости между модулями через их управлением зависимостями:
<!-- Module A -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.app</groupId>
      <artifactId>submoduleA2</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>
</dependencyManagement>

<!-- Module B -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.app</groupId>
      <artifactId>moduleA</artifactId>
      <version>${project.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<!-- Submodule B2 -->
<dependencies>
  <dependency>
    <groupId>com.app</groupId>
    <artifactId>submoduleA2</artifactId>
  </dependency>
  [...]
</dependencies>
  • другие опции?

1 Ответ

1 голос
/ 23 января 2020

Первый вариант применяется часто и обычно хорошо.

...