maven - 多模块项目中的内部依赖声明
问题描述
我正在开发一个具有以下 Maven 架构的项目:
- 父母(pom)
- 模块 A (pom)
- 子模块 A1 (jar)
- 子模块 A2 (jar)
- 模块 B (pom)
- 子模块 B1 (jar)
- 子模块 B2 (jar)
- 模块 A (pom)
父 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>
- 通过他们的 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>
- 其他选择?
解决方案
第一个选项经常被应用并且通常很好。
推荐阅读
- python - 在多索引熊猫数据框中添加列
- javascript - 在列表中显示表单输入数据
- java - 删除数组的第一个元素而不在java中使用
- typescript - 为什么`semantic error TS2344: Type '"ptn3"' 不满足约束 '"ptn1" | “ptn2”'。`
- tensorflow - Tensorflow 模型控制台错误:“错误:传递给 'slice2d' 的参数 'x' 必须是数字张量,但得到了字符串张量”
- amazon-web-services - AWS 实例时钟是否以分钟精度同步?
- android - 如何正确实现以下缩放/反弹动画?
- google-cloud-dataflow - 使用 SLF4J 和 Google Dataflow 记录行号
- javascript - 如何遍历 jQuery 中动态创建的数组?
- c - 多个recv()直到超时?