Grails 2.3.7删除itext 2.0.8 jar

时间:2014-05-14 16:18:11

标签: grails

我尝试将应用程序从Grails 2.2.4更新到2.3.7,并且我遇到了与iText相关的问题。

执行grails资源 - 依赖项向我显示我有2个罐子用于iText

+--- org.grails:grails-docs:2.3.7
|    \--- org.xhtmlrenderer:core-renderer:R8
|    \--- org.yaml:snakeyaml:1.8
|    \--- org.grails:grails-gdoc-engine:1.0.1
|    \--- **com.lowagie:itext:2.0.8**
|    \--- commons-lang:commons-lang:2.6
+--- org.grails.plugins:jasper:1.8.0
|    \--- **com.lowagie:itext:2.1.7**
|         \--- bouncycastle:bcmail-jdk14:138
|         \--- bouncycastle:bcprov-jdk14:138
|         \--- org.bouncycastle:bctsp-jdk14:1.38
|              \--- org.bouncycastle:bcprov-jdk14:1.38
|              \--- org.bouncycastle:bcmail-jdk14:1.38

我尝试删除在BuildConfig上添加的itext 2.0.8

grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
    excludes "itext" 
 }

然而,当我刷新依赖关系时,Grails反正添加了itext 2.0.8。

有人可以给我一个解决方案的暗示吗?

最好的问候

2 个答案:

答案 0 :(得分:8)

itext 2.0.8是依赖项的依赖项:grails-docs。你可以做的是从继承的全局依赖项中排除grails-docs,然后专门添加它,不包括itext。

grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
        excludes "grails-docs"
    }

    dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
        // runtime 'mysql:mysql-connector-java:5.1.24'
        build('org.grails:grails-docs:2.3.7') {
            excludes 'itext'
        }
    }
}

这将产生

+--- org.grails:grails-docs:2.3.7
|    \--- org.xhtmlrenderer:core-renderer:R8
|    \--- org.yaml:snakeyaml:1.8
|    \--- org.grails:grails-gdoc-engine:1.0.1
|    \--- commons-lang:commons-lang:2.6

答案 1 :(得分:1)

无需排除itext版本,而是显式添加依赖版本,如下所示。这将使用以下版本覆盖任何插件itext。将来,使用itext添加新插件也不会引起任何问题。

 dependencies {
         build "com.lowagie:itext:2.1.0"
    }

注意:不要排除任何itext或grails-docs。