如何在使用gradle运行测试时排除jersey 1.x依赖项

时间:2015-07-02 01:59:49

标签: gradle jersey jersey-2.0 jersey-client netflix-eureka

我们有一个依赖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带来的类。

2 个答案:

答案 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依赖项

也许你可以使用它们?