我有一个有几个子模块的库。我已在父POM中设置了库的版本。
<groupId>com.softtech</groupId>
<artifactId>BatchLibrary</artifactId>
<version>2.1</version>
<packaging>pom</packaging>
此外,我创建了一个Maven物料清单(BOM)项目,其中定义了此库。
在第一种情况中,我在BOM中设置整个库的版本,如下所示
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.softtech</groupId>
<artifactId>BatchLibrary</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
</dependencyManagement>
在第二种情况中,我为每个子模块单独设置版本,如下所示
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.softtech</groupId>
<artifactId>BatchLibrary-core</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>com.softtech</groupId>
<artifactId>BatchLibrary-web</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
</dependencyManagement>
我已将此BOM添加到我的项目中。在我的项目中声明库的子模块没有版本时。在上面提到的第一种情况下,我收到错误
缺少dependency.version
在第二种情况下,它工作正常。
这是BOM的工作原理吗?我是否必须在BOM中单独定义所有子模块,或者我可以用版本定义我的库的父POM,它应该可以工作。如果应该?为什么它在我的情况下不起作用?
答案 0 :(得分:0)
BOM应列出所有工件的版本。我从Maven网站的Importing Dependencies部分剪下了以下信息&#34;依赖机制简介&#34;:
项目的根源是BOM pom。它定义了将在库中创建的所有工件的版本。其他希望使用该库的项目应将此pom导入其pom的dependencyManagement部分。