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

Maven 多模块项目中的内部依赖性声明,maven,multi-module,Maven,Multi Module,我正在从事一个具有以下maven体系结构的项目: 家长(pom) 模块A(pom) 子模块A1(jar) 子模块A2(jar) 模块B(pom) 子模块B1(jar) 子模块B2(jar) 父pom有一个dependencManagement部分,声明外部依赖项的版本 现在我应该如何声明内部依赖关系 B2依赖于B1和A2。A2依赖于A1 我的选择是: 添加具有版本的依赖项 通过模块的依赖项管理在模块之间添加依赖项: com.app 子模块A2 ${project.vers

我正在从事一个具有以下maven体系结构的项目:

  • 家长(pom)
    • 模块A(pom)
      • 子模块A1(jar)
      • 子模块A2(jar)
    • 模块B(pom)
      • 子模块B1(jar)
      • 子模块B2(jar)
父pom有一个
dependencManagement
部分,声明外部依赖项的版本

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

B2依赖于B1和A2。A2依赖于A1

我的选择是:

  • 添加具有版本的依赖项
  • 通过模块的依赖项管理在模块之间添加依赖项:
  • 
    com.app
    子模块A2
    ${project.version}
    com.app
    模
    ${project.version}
    聚甲醛
    进口
    com.app
    子模块A2
    [...]
    
  • 其他选择

  • 第一个选项经常使用,而且通常很好。

    Apache选择了第二个也可以使用的解决方案,这或多或少是一个品味问题,而且您觉得更容易阅读/维护。
    <!-- Submodule B2 -->
    <dependencies>
      <dependency>
        <groupId>com.app</groupId>
        <artifactId>submoduleA2</artifactId>
        <version>${project.version}</version>
      </dependency>
      [...]
    </dependencies>
    
    <!-- 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>