2013-11-27 36 views
7

的Grails有BouncyCastle的:bcprov-JDK14:138全局依赖如何排除Grails的全局依赖

+--- 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 

但我的应用程序需要bcprov-jdk15on-149。当我将它作为依赖它不驱逐旧版本

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

我尝试了很多变种将它排除在外,但没有一个工作

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' 
} 

,以使工作的唯一方法 - 排除整个'grail-docs'依赖。

如何只排除旧的bcprov-jdk14:138?

或者怎么做新的(bcprov-jdk15on-149)驱逐旧的(bcprov-jdk14:138)?

+0

尝试'编译'org.bouncycastle:bcpg-jdk15on:1.49''。应该使用更新的版本。 –

+0

谢谢你的回答,但我已经试过了,它没有奏效。这似乎是'maven'依赖解析器(从2.3开始使用grails)的问题,因为'ivy'解析器一切正常。 –

+0

如果您在BuildConfig.groovy中更改使用Ivy,它会起作用吗?那我想你应该养一个吉拉。 –

回答

9

这似乎是一个错误报道>>http://jira.grails.org/browse/GRAILS-10640

我找到了一个解决方法通过覆盖com.logwagie.itext依赖。

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

希望这会帮助你。

+1

这种排除可以在其他人使用的插件中有效吗? – Omid