Exclude dependency in a profile

maven-2

Solution

Instead of excluding dependencies in a profile, you can set them as `provided` in it. This doesn't require any overly complex configuration and will exclude the dependencies you don't want from the final build.

In the desired profile, add a `dependencies` section, copy the declaration of the ones you want to exclude and scope them as `provided`.

For example, let say you want to exclude `slf4j-log4j12`:

<profiles>

    <!-- Other profiles -->

    <profile>
        <id>no-slf4j-log4j12</id>
        <dependencies>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.2</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </profile>

    <!-- Other profiles -->

</profiles>

Problem

I have a maven module which has some dependencies. In a certain profile, I want to exclude some of those dependencies (to be exact, all dependencies with a certain group id). They however need to be present in all other profiles. Is there a way to specify exclusions from the dependencies for a profile?

Original source