Java – can I use the same POM Redefine imported Maven dependencies in XML?
I'm working in an application server environment, and I'm using BOM to collect dependency information, as follows:
<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>
However, this particular BOM specifies the dependency as "compiled", and I want to set the scope of all projects to "provided" However, when I try to override the scope in the same POM, I import the dependencies as follows:
<dependency>
<groupId>org.picketlink</groupId>
<artifactId>picketlink-federation</artifactId>
<scope>provided</scope>
</dependency>
Maven complains that it can't find the version, or if I use the version attribute specified in BOM, I can't find it
I'm sure this is the problem of importing coverage in the same POM, because I can cover the scope in the subproject Is there any way to import and coverage in a POM?
*All the code snippets above come from the same part
Solution
This is certainly feasible:
<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>
Remember that you need to redefine the scope in < dependencies >, not in < dependencymanagement > part.
If inheritance is used, coverage is certainly propagated to any child POM
