maven - 你应该在你的 pom 中包含那些已经是你的一些依赖项的依赖项的依赖项吗?
问题描述
假设您需要两个依赖项:A 和 B。同时 A 已经是 B 的依赖项。那么您是否仍然希望/需要在 pom 中添加 A 和 B 作为依赖项?
我相信当 A 和 B 是外部库时,可能需要这可能需要 A 的版本可能与 B 所依赖的 A 的版本不同。
但是当你的模块和 A 和 B 都是同一个项目中的模块时呢?即知道他们的版本都将是同步的。
解决方案
如果您的模块使用来自 B 的 API,最好将其显式添加到您的 pom 中,即使这不是绝对必要的。如果您升级 A,很可能它不再使用 B,然后您将在不更改模块代码的情况下构建失败。
关于版本,您应该在父 pom 中使用dependencyManagement管理那些版本。然后,您可以跳过子 pom 中托管依赖项的版本。中的版本dependencyManagement
覆盖传递依赖项中的版本,确保您在任何地方都使用相同的版本。
如果所有模块都在同一个项目中,它们也应该共享相同的项目版本。通常,这将是快照版本,例如1-SNAPSHOT
每个模块将使用类似的东西:
<project>
<artifactId>A</artifactId>
<version>1-SNAPSHOT</version>
并在其他模块中像这样引用 A 和 B:
<dependency>
<groupId>com.yourcompany</groupId>
<artifactId>A</artifactId>
<version>${project.version}</version>
</dependency>
要在构建版本之前设置非 SNAPSHOT 版本,例如可以使用 maven-dependency-plugin 的versions:set目标。
推荐阅读
- python - 如何在 Jupyter Notebook 中导入 Pyperclip?
- windows - 使用批处理文件确定网络共享映射到哪个驱动器号
- arcore - VR耳机模拟器
- html - Flex 布局:桌面上的 div 发生在下面,但在移动设备上是所有内容的最后一个
- javascript - 如何使用 JavaScript 使图像在自定义路径上移动?
- r - 如何估计 R 中的分位数回归预测
- django - 生成高度定制的动态PDF文件
- c++ - 将“push_back”用于带有“get”函数C++的向量
- c - 允许用户修改从终端文件中提取的字符串并保存回文件
- css - IE,为什么剑道下拉列表中的省略号是电话图标?