多模块项目中的内部依赖声明

时间:2020-01-23 12:42:11

标签: maven multi-module

我正在研究具有以下Maven架构的项目:

  • 父母(绒球)
    • 模块A(pom)
      • 子模块A1(jar)
      • 子模块A2(jar)
    • 模块B(pom)
      • 子模块B1(jar)
      • 子模块B2(jar)

父pom有一个dependencyManagement部分,用于声明外部依赖项的版本。

现在我应该如何声明内部依赖关系?

B2依赖于B1和A2。 A2对A1有依赖性。

我的选择是:

  1. 在版本中添加依赖项
<!-- Submodule B2 -->
<dependencies>
  <dependency>
    <groupId>com.app</groupId>
    <artifactId>submoduleA2</artifactId>
    <version>${project.version}</version>
  </dependency>
  [...]
</dependencies>
  1. 将所有子模块(A1,A2,B1,B2)及其版本添加到父pom的dependencyManagement,然后在子模块中添加没有版本的依赖项:
<!-- 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>
  1. 通过模块之间的dependencyManagement添加模块之间的依赖关系:
<!-- 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 个答案:

答案 0 :(得分:1)

第一个选项通常被应用并且通常很好。