我们有一个依赖Netflix的Eureka的Web服务项目,它依赖于Jersey客户端1.x.
我们的项目使用gradle,在项目中我们有src,单元,集成和功能测试。对于我们的功能测试,我们有一个jar,我们在testCompile gradle部分导入,该部分包装Jersey客户端以向Web服务发送请求。
现在我的问题是如何在testCompile中忽略netflix Jersey客户端依赖项,以便我可以使用新的Jersey 2.x客户端进行功能测试?
下面的构建脚本:
主要服务构建脚本摘录:
<input type=hidden name="events[][id]" value="<% event.id %>">
服务测试客户相关部分:
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'
}
来自github的Eureka Client gradle脚本的相关部分:
dependencies {
compile 'org.glassfish.jersey.core:jersey-client:2.19'
compile 'org.glassfish.jersey.connectors:jeresey-apache-connector:2.19'
}
通过上面的设置我得到了找不到方法的错误,因为当测试运行时,一些jersey 1.x类优先于test-client jar带来的类。
答案 0 :(得分:0)
您可以使用gradle依赖关系监视来找出哪些库带来了jersey。
./gradlew dependencies
您可以将其传输到一个文件中,然后以less
的方式找出谁带来的球衣1. *。
然后,只需将它从具体的那些中排除,然后编译自己的:
compile("com.example.library:artifactId:x.y.z"){
exclude group:'org.glassfish.jersey', module:jersey-common
}
compile('org.glassfish.jersey.core:jersey-common:2.4.1')
答案 1 :(得分:0)
我和Eureka(但使用Spring Cloud)在jersey 1.x vs glassfish 2.x上遇到了同样的问题。我试过这个:
compile ("org.springframework.cloud:spring-cloud-starter-eureka:1.0.0.RELEASE")
{
exclude group:'com.sun.jersey', module: 'jsr311-api'
}
但是,尤里卡并不适合我......
我想我会尝试使用不同的球衣切换到Eureka 2.0,但没有弹簧云: https://github.com/Netflix/eureka/wiki/Eureka-2.0-Architecture-Overview http://mvnrepository.com/artifact/com.netflix.eureka检查Eureka2依赖项
也许你可以使用它们?