我正在使用BOM来声明项目中常见工件的版本。
我在具有多个子模块的项目中导入超级POM的dependencyManagement
部分中的BOM,如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mygroup</groupId>
<artifactId>mybom</artifactId>
<version>bomversion</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
</dependencies>
</dependencyManagement>
目标是这个超级POM的孩子不必声明他们需要的模块版本。这很好。
但是,我还希望能够在我的超级pom中指定某些依赖项应该使用排除项导入,例如:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>artefactgroup</groupId>
<artifactId>myartifact</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
...
</dependencies>
</dependencyManagement>
问题在于,myartifact
中导入的BOM无法识别版本。这是预期的行为吗?
哪种方法可以在我的超级POM中声明排除项,以便从BOM中获取版本?
如果我没有在超级POM中声明排除,但是在每个需要myartifact
的子项中它都有效,但是在我的项目中,相同的排除声明遍布各处,这远非一个好主意。 / p>