【问题标题】:Internal depencencies declaration in multimodule project多模块项目中的内部依赖声明
【发布时间】:2020-01-23 12:42:11
【问题描述】:

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

  • 父级 (pom)
    • 模块 A (pom)
      • 子模块 A1 (jar)
      • 子模块 A2 (jar)
    • 模块 B (pom)
      • 子模块 B1 (jar)
      • 子模块 B2 (jar)

父 pom 有一个 dependencyManagement 部分声明 external 依赖项的版本。

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

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. 其他选项?

【问题讨论】:

    标签: maven multi-module


    【解决方案1】:

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

    【讨论】:

    • Apache 选择了第二种解决方案
    • 这也行,这或多或少是一个品味问题,以及你发现什么更容易阅读/维护。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2021-10-17
    • 2023-02-24
    • 1970-01-01
    • 2015-11-10
    相关资源
    最近更新 更多