Maven BOM文件创建规范:仅需版本还是需添加依赖?
创建Maven BOM文件的正确方式
Maven BOM(物料清单)的核心作用是统一管理依赖版本,让引用它的项目无需重复声明版本号。变体2才是符合规范的BOM实现方式,原因如下:
两种变体的本质区别
- 变体1不是真正的BOM:仅定义
<properties>版本变量的话,这个文件只是个普通的POM片段,没有任何BOM的功能。其他项目引用它后,还是得手动给每个依赖写全groupId、artifactId和版本,完全起不到统一版本管理的作用。 - 变体2是标准BOM实现:
<dependencyManagement>是BOM的核心部分,在这里声明的依赖会被所有引用该BOM的项目继承版本信息。子项目只需要在自己的<dependencies>里声明groupId和artifactId,不用写version,Maven会自动从BOM中读取对应的版本号,这才实现了BOM的核心价值——版本统一管控。
补充说明
BOM里的<dependencyManagement>只负责版本管理,不会自动把依赖引入项目。如果子项目需要使用某个依赖,还是得在自己的<dependencies>里显式声明,只是可以省略version字段。
举个例子,其他项目引用这个BOM后,引入JavaFX控件的写法会变成这样:
<dependencyManagement> <dependencies> <!-- 引用你的BOM --> <dependency> <groupId>你的BOM的groupId</groupId> <artifactId>你的BOM的artifactId</artifactId> <version>你的BOM版本</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- 无需写version,自动从BOM继承 --> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> </dependency> </dependencies>
内容的提问来源于stack exchange,提问作者SilverCube
相关产品推荐
相关产品推荐

