我们有一个依赖于 Netflix 的 Eureka 的 Web 服务项目,它依赖于 Jersey 客户端 1.x。
我们的项目正在使用 gradle,在项目中我们有我们的 src、单元、集成和功能测试。对于我们的功能测试,我们在 testCompile gradle 部分中导入了一个 jar,它包装了 Jersey 客户端以向 Web 服务发送请求。
现在我的问题是如何在 testCompile 中忽略 netflix Jersey 客户端依赖项,以便可以使用新的 Jersey 2.x 客户端进行功能测试?
构建脚本如下:
主要服务构建脚本摘录:
dependencies {
compile 'com.netflix.eureka:eureka-client:1.1.97'
compile 'com.sun.jersey:jersey-bundle:1.18'
testCompile 'some.domain:service-test-client:1.0.1'
}
服务测试客户端相关部分:
dependencies {
compile 'org.glassfish.jersey.core:jersey-client:2.19'
compile 'org.glassfish.jersey.connectors:jeresey-apache-connector:2.19'
}
来自 github 的 Eureka Client gradle 脚本的相关部分:
ext {
githubProjectName = 'eureka'
awsVersion='1.9.3'
servletVersion='2.5'
jerseyVersion='1.11'
governatorVersion='1.3.3'
archaiusVersion='0.6.5'
blitzVersion='1.34'
mockitoVersion='1.9.5'
junit_version='4.10'
mockserverVersion='3.9.2'
jetty_version='7.2.0.v20101020'
}
dependencies {
compile "com.sun.jersey:jersey-core:$jerseyVersion"
compile "com.sun.jersey:jersey-client:$jerseyVersion"
compile 'com.sun.jersey.contribs:jersey-apache-client4:1.11'
compile 'org.apache.httpcomponents:httpclient:4.2.1'
}
通过上述设置,我得到方法未找到错误,因为当测试运行时,一些 jersey 1.x 类优先于测试客户端 jar 引入的类。