2

我们有一个依赖于 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 引入的类。

4

2 回答 2

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,但没有 Spring Cloud: https ://github.com/Netflix/eureka/wiki/Eureka-2.0-Architecture-Overview http://mvnrepository.com/artifact/ com.netflix.eureka检查 Eureka2 依赖项

也许你可以使用它们?

于 2015-12-28T08:26:10.340 回答
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')
于 2015-12-03T01:20:56.700 回答