我在应用服务器环境中工作,我使用bom来收集依赖关系信息,如下所示:
<dependency>
<groupId>org.jboss.bom.eap</groupId>
<artifactId>jboss-javaee-6.0-with-security</artifactId>
<version>${jboss.bom.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
但是,这个特定的bom指定了依赖关系&#34; compile&#34;我希望将我的所有项目作为&#34;提供&#34;。但是,当我尝试覆盖同一个pom中的范围时,我将导入依赖关系,如下所示:
<dependency>
<groupId>org.picketlink</groupId>
<artifactId>picketlink-federation</artifactId>
<scope>provided</scope>
</dependency>
Maven抱怨它无法找到该版本,或者如果我使用bom中指定的版本属性,则无法找到该属性。
我相当肯定这是同一个pom中import + override的问题,因为我可以很好地覆盖子项目中的范围。有没有办法在一个pom中导入和覆盖范围?
*上面的所有代码段都来自同一部分。
答案 0 :(得分:0)
这当然可行:
<dependencyManagement>
...
<dependency>
<groupId>org.jboss.bom.eap</groupId>
<artifactId>jboss-javaee-6.0-with-security</artifactId>
<version>${jboss.bom.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
</dependencyManagement>
<dependencies>
...
<dependency>
<groupId>org.picketlink</groupId>
<artifactId>picketlink-federation</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
请记住,您需要在<dependencies>
部分的<dependencyManagement>
和不中重新定义范围。
如果使用继承,您的范围覆盖当然会传播到任何子POM。