首页 > 解决方案 > 多模块项目中的内部依赖声明

问题描述

我正在开发一个具有以下 Maven 架构的项目:

父 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)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>
  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. 其他选择?

标签: mavenmulti-module

解决方案


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


推荐阅读