ricardo
ricardo

Reputation: 621

How can I remove artifacts by Maven from the lib folder of the ear?

How can I remove artifacts from the lib folder of the ear? For exemple: activation.jar.

I was try follow the especification about Excluding a module (just change webModule for jarModule) but without success with this error: Artifact[jar:javax.activation:activation] is not a dependency of the project.

Upvotes: 1

Views: 2100

Answers (3)

Matthew Gilliard
Matthew Gilliard

Reputation: 9498

As others have said, you need to use provided as the scope. If the jars you need to remove are not dependencies of your project directly (ie are transient dependencies), then you need to exclude them from whatever is bringing them into your build . If you actually need those classes at compile-time, you'll have to re-include them as provided:

    <dependency>
        <!-- this dependency has javax.activation as a dependency -->
        <groupId>blah.groupId</groupId>
        <artifactId>blah.artifactId</artifactId>
        <version>blah.version</version>
        <exclusions>
            <exclusion>
                <groupId>javax.activation</groupId>
                <artifactId>activation</artifactId>
            <exclusion>
        </exclusions>
    </dependency>

    <!-- only necessary if this jar is needed at compile-time -->
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
        <scope>provided</scope>
    </dependency>

Upvotes: 0

Aaron Digulla
Aaron Digulla

Reputation: 328556

Set the scope to provided. Maven will still add the dependency to the compile time classpath but not to the final WAR.

Upvotes: 1

Nishant
Nishant

Reputation: 55856

Use provided as scope wherever the dependency is defined.

<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
    <scope>provided</scope>
</dependency>

Upvotes: 1

Related Questions