How to exclude grails global dependency

2020-02-13 10:27发布

问题:

Grails has bouncycastle:bcprov-jdk14:138 as global dependency

+--- org.grails:grails-docs:2.3.3
|    \--- org.xhtmlrenderer:core-renderer:R8
|    \--- org.yaml:snakeyaml:1.8
|    \--- org.grails:grails-gdoc-engine:1.0.1
|    \--- com.lowagie:itext:2.0.8
|         \--- bouncycastle:bcmail-jdk14:138
|         \--- bouncycastle:bcprov-jdk14:138
|    \--- commons-lang:commons-lang:2.6

But my app need bcprov-jdk15on-149. When I added it as dependency it doesn't evict old version

dependencies {
    build 'org.bouncycastle:bcpg-jdk15on:1.49'
    build 'org.bouncycastle:bcprov-jdk15on:1.49'
}

I tried a lot of variants to exclude it but no one works

inherits("global") {
    //excludes 'grails-docs'

    excludes 'org.bouncycastle:bcmail-jdk14:138'
    excludes 'bouncycastle:bcmail-jdk14:138'
    excludes 'bcmail-jdk14-138.jar'
    excludes 'bcmail-jdk14'
    excludes 'bcmail'

    excludes 'bouncycastle:bcprov-jdk14:jar:138'
    excludes 'org.bouncycastle:bcprov-jdk14:138'
    excludes 'bouncycastle:bcprov-jdk14:138'
    excludes 'bcprov-jdk14-138.jar'
    excludes 'bcprov-jdk14'
    excludes 'bcprov'
    excludes 'bouncycastle'
}

The only way to made it work – exclude whole 'grail-docs' dependency.

How exclude only old bcprov-jdk14:138?

Or how to do that the new(bcprov-jdk15on-149) evict old(bcprov-jdk14:138)?

回答1:

It seems to be a reported bug >> http://jira.grails.org/browse/GRAILS-10640

I found a workaround by overriding the com.logwagie.itext dependency.

dependencies {
    // add this line
    build("com.lowagie:itext:2.1.7") { excludes "bouncycastle:bcprov-jdk14:138", "org.bouncycastle:bcprov-jdk14:1.38" }
}

Hope this will help you.