我正在使用Grails 1.3.7并且无法弄清楚如何从我的类路径中获取版本4.0的httpclient(支持4.1)。我需要这样做是因为插件所依赖的4.1中使用的无参数构造函数。
运行grails'dependent-report',似乎4.1应该是在运行时使用的那个。如果我将事情打包成.war,那就是它。然而,由于某种原因,在使用run-app时,版本4.0仍然在类路径上结束。注意它是(正确地)在编译时用于某些grails内部,并且不知何故它仍然在我的类路径上结束。
- >我可以弄清楚4.0 .jar究竟来自哪里并最终在我的类路径上并阻止它发生(通过run-app运行时,所有.jars都放在哪里?)
- >我可以告诉grails用4.1而不是4.0来编译它的内部(在这种情况下是org.codehaus.groovy.modules.http-builder模块的http-builder吗?)可以说是不是最好的解决方案但我会接受它,因为每当我想测试它时,将所有东西都包装成.war。这是不愉快的。
非常感谢帮助。
答案 0 :(得分: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'
}
欢呼声
利
答案 1 :(得分:1)
您可以通过在BuildConfig.groovy
中添加排除行来从类路径中获取httpclient 4.0。通过使用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中的no-arg构造函数的插件应该将其声明为依赖项。如果不是,您应该与插件的作者打开一个问题。要解决此问题,您可以在依赖关系部分列出httpclient 4.1,如上面的leebutts所述。