我正在使用Grails 1.3.7,不知道如何从我的类路径中获取4.0版本的httpclient(支持4.1版本)。我需要这样做,因为插件依赖于4.1中使用的无参数构造器。
运行grails的'dependency-report',它看起来应该是在运行时使用的版本。如果我把事情打包成一场战争。然而,由于某种原因,当使用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中是不愉快的。
我刚刚做了同样的事情,将以下内容添加到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'
}
欢呼李您可以通过在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中无参数构造函数的插件应该将其声明为依赖项。如果它没有,你应该打开一个问题与插件的作者。为了解决这个问题,您可以像leebutts上面描述的那样,在依赖项部分列出httpclient 4.1。