# EAR Plugin - earlib exclude or provide

**URL:** <https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231>\
**Category:** Old Forum Archive\
**Created:** [November 23, 2012, 10:06am UTC](https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231 "2012-11-23T10:06:00Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![trojan](https://avatars.discourse-cdn.com/v4/letter/t/3da27b/32.png) [@trojan](https://discuss.gradle.org/u/trojan)\
**Post date:** [November 23, 2012, 10:06am UTC](https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231/1 "2012-11-23T10:06:00Z")

</div>

Hello,

is it possible to exclude jar-files from an earlib or mark them as provided?

The ear-project looks like this:

```gradle
apply plugin: 'ear'
  dependencies {
 deploy project(path: ':foo-war', configuration: 'archives')
 deploy project(':foo-service')
 deploy project(':foo-dao')
    earlib project(':foo-entity')
}

```

The project foo-entity has a dependency to a jar and this is now in the ear lib-folder:

```gradle
build.gradle of foo-entity
  dependencies {
  compile 'org.glassfish.extras:glassfish-embedded-all:3.1.1'
}

```

The ear looks like:

lib/foo-entity.jar lib/glassfish-embedded-all.3.1.1.jar foo-war.war foo-service.jar foo-dao.jar

I don’t need the jar in my earlib because it is already part of my glassfish. Is there any way to exclude the jar from the ear lib-folder?

Like:

```gradle
apply plugin: 'ear'
  dependencies {
 deploy project(path: ':foo-war', configuration: 'archives')
 deploy project(':foo-service')
 deploy project(':foo-dao')
    earlib project(':foo-entity'){
            exclude 'org.glassfish.extras:glassfish-embedded-all:3.1.1'
        }
}

```

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![Detelin](https://avatars.discourse-cdn.com/v4/letter/d/3e96dc/32.png) [@Detelin](https://discuss.gradle.org/u/Detelin)\
**Post date:** [November 25, 2012, 4:46pm UTC](https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231/2 "2012-11-25T16:46:00Z")

</div>

You could use [DependencyHandler.add](http://gradle.org/docs/current/javadoc/org/gradle/api/artifacts/dsl/DependencyHandler.html#add%28java.lang.String,%20java.lang.Object,%20groovy.lang.Closure%29) if you want to configure the created [ProjectDependency](http://gradle.org/docs/current/javadoc/org/gradle/api/artifacts/ProjectDependency.html):

```gradle
dependencies {
    add ('earlib', project(':foo-entity')) {
        exclude group: 'org.glassfish.extras', module: 'glassfish-embedded-all'
    }
}

```

---

<div class="post-metadata">

**Author:** ![trojan](https://avatars.discourse-cdn.com/v4/letter/t/3da27b/32.png) [@trojan](https://discuss.gradle.org/u/trojan)\
**Post date:** [November 25, 2012, 7:13pm UTC](https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231/3 "2012-11-25T19:13:00Z")

</div>

As simple as that!

Thank you!

---

<div class="post-metadata">

**Author:** ![Jubel\_Correa](https://avatars.discourse-cdn.com/v4/letter/j/b9bd4f/32.png) [@Jubel\_Correa](https://discuss.gradle.org/u/Jubel_Correa)\
**Post date:** [May 29, 2013, 4:08pm UTC](https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231/4 "2013-05-29T16:08:00Z")

</div>

A simpler way

dependencies {

earlib (project(’:MyProjectEJBClient’)) {

transitive = false

}

}

---

<div class="post-metadata">

**Author:** ![cmcginty](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/cmcginty/32/2209_2.png) [@cmcginty](https://discuss.gradle.org/u/cmcginty)\
**Post date:** [October 29, 2013, 8:12pm UTC](https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231/5 "2013-10-29T20:12:00Z")

</div>

How do you exclude a local file dependency from the earlib?

```gradle
dependencies {
    compile files('lib/custom.jar')
}

```

---

<div class="post-metadata">

**Author:** ![cmcginty](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/cmcginty/32/2209_2.png) [@cmcginty](https://discuss.gradle.org/u/cmcginty)\
**Post date:** [October 29, 2013, 10:13pm UTC](https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231/6 "2013-10-29T22:13:00Z")

</div>

Related: [http://forums.gradle.org/gradle/topics/removing\_a\_jar\_dependency\_from\_ear](http://forums.gradle.org/gradle/topics/removing_a_jar_dependency_from_ear)

---

<div class="post-metadata">

**Author:** ![cmcginty](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/cmcginty/32/2209_2.png) [@cmcginty](https://discuss.gradle.org/u/cmcginty)\
**Post date:** [January 8, 2014, 8:44pm UTC](https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231/7 "2014-01-08T20:44:00Z")

</div>

Related thoughts …

One thing about using the ‘exclude’ method above, is that it will not automatically exclude transitive dependencies of the lib. This means you can still get duplicate jars in the EAR and a global lib/ directory. The war’s plugin ‘provided’ configurations fixes this.

So if you want to create a ‘provided’ configuration for your ear you can do something like this. This code will exclude all of the dependencies in the ‘provided’ configuration from your ‘earlib’.

```gradle
configurations.create 'provided'
dependencies {
    provided ....
}
configurations.provided.resolvedConfiguration.resolvedArtifacts.each {
    def dep = it.moduleVersion.id
    configurations.earlib {
        it.exclude group:dep.group, module:dep.name
     }
}

```

Can anyone improve on this?

---

<div class="post-metadata">

**Author:** ![Alex\_Dorandish](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/alex_dorandish/32/1523_2.png) [@Alex\_Dorandish](https://discuss.gradle.org/u/Alex_Dorandish)\
**Post date:** [November 25, 2014, 12:12am UTC](https://discuss.gradle.org/t/ear-plugin-earlib-exclude-or-provide/2231/8 "2014-11-25T00:12:00Z")

</div>

None of the mentioned solutions works for JBoss libraries. Anyone knows why?
