7

我正在使用 Grails 1.3.7,但无法弄清楚如何从我的类路径中获取 4.0 版的 httpclient(支持 4.1)。我需要这样做,因为插件依赖于 4.1 中使用的无参数构造函数。

运行 grails 'dependency-report',看来 4.1 应该是运行时使用的。如果我把东西打包成一个.war,它就是这样。但是,由于某种原因,在使用 run-app 时,4.0 版仍然会出现在类路径中。请注意,它(正确地)在编译时用于某些 grails 内部,并且不知何故它仍然在我的类路径中结束。

-> 我能否弄清楚 4.0 .jar 究竟来自哪里并最终出现在我的类路径中并阻止它发生(通过 run-app 运行时所有 .jar 放在哪里?)

-> 我可以告诉 grails 用 4.1 而不是 4.0 编译它的内部(在这种情况下是 org.codehaus.groovy.modules.http-builder 模块的 http-builder 吗?)可以说不是最好的解决方案,但我会接受,因为每次我想测试它时都将所有内容打包成一个 .war 并不令人愉快。

帮助将不胜感激。

4

2 回答 2

7

我刚刚经历了同样的事情,将以下内容添加到您的 BuildConfig.groovy

dependencies {        
        build 'org.apache.httpcomponents:httpcore:4.1.2' 
        build 'org.apache.httpcomponents:httpclient:4.1.2' 
        runtime 'org.apache.httpcomponents:httpcore:4.1.2'
        runtime 'org.apache.httpcomponents:httpclient:4.1.2'
} 

干杯

于 2011-11-04T00:06:46.117 回答
1

您可以通过在BuildConfig.groovy. grails dependency-report通过使用命令找出哪个插件将其声明为依赖项。

一旦找到包含它的那个,就可以在BuildConfig.groovy. 例子:

plugins {
    compile ':other-plugin:1.0.0' // other-plugin depends on httpclient 4.1
    compile(':aws:1.2.12.2') { // aws plugin depends on httpclient:3.1
        excludes 'httpclient'
    }
}

依赖 httpclient 4.1 中无参数构造函数的插件应将其声明为依赖项。如果没有,您应该向插件的作者提出问题。要解决此问题,您可以在依赖项部分中列出 httpclient 4.1,如上面 leebutts 所述。

于 2013-11-02T17:06:57.180 回答