How to use BOM file with Maven?

user2071995 picture user2071995 · Feb 14, 2013 · Viewed 39.8k times · Source

I have done considerable research in internet and I haven't found any easy explanation what to do with BOM files with Maven.

The problem is that I use JBoss 7.1.1 and I want to include all JBoss client jars in pom.xml. JBoss has a manual that says that I should use BOM files, but I don't know how to use it in my pom.xml.

Please help.

Answer

kostja picture kostja · Feb 14, 2013

A bom is a so called bill of materials - it bundles several dependencies to assure that the versions will work together. JBoss has boms for many of it's projects, including Arquillian and the JBoss AS itself.

There is an explanation of the bom usage in the maven docs - it is hidden well below.

A practical example:

You include the bom into your pom like this:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.bom</groupId>
            <artifactId>jboss-javaee-6.0-with-tools</artifactId>
            <version>${javaee6.with.tools.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement> 

Then you do not have to specify the version attribute of a dependency, if it is defined in the bom like this:

<dependency>
    <groupId>javax.enterprise</groupId>
    <artifactId>cdi-api</artifactId>
    <scope>provided</scope>
</dependency>