当前位置: 首页 > 面试题库 >

从Gradle依赖项中排除软件包

毛德曜
2023-03-14
问题内容

我遇到一个问题,其中同一类的多个版本显示在我的类路径中。有问题的班级是javax.ws.rs.core.UriBuilder。我要使用的版本由引入javax.ws.rs:javax.ws.rs- api:2.0.1。但是,我们还使用了Jira rest客户端库,该库依赖于较旧版本的jersey(com.sun.jersey:jersey- core),该版本包含捆绑在jar中的java.ws软件包。

这是构建文件中的示例片段:

dependencies {
  compile 'com.atlassian.jira:jira-rest-java-client-core:2.0.0-m31'
  compile 'javax.ws.rs:javax.ws.rs-api:2.0.1'
  compile 'org.glassfish.jersey.core:jersey-client:2.17'
}

我无法删除com.sun.jersey:jersey- core它,因为它使用了与新版本不同的软件包名称,并且会导致在Jira客户端中找不到类def的异常

据我所知,目前我的选择是:

  1. 恢复使用Jersey 1.x及其jsr311的实现
  2. 不知何故,gradle javax.ws从旧球衣客户中排除了该软件包。

我想继续使用较新版本的jersey,因此#2将是我的理想解决方案,但我不确定是否有可能。有人知道该怎么做吗?如果那不可能,我欢迎其他建议。


问题答案:

我发现com.sun.jersey:jersey-
core:1.19不会捆绑javax.ws.rs类文件,而是将它们列出为编译时依赖项。将此片段添加到我的build.gradle中解决了该问题。

configurations.all {
  resolutionStrategy {
    // For a version that doesn't package javax.ws
    force 'com.sun.jersey:jersey-core:1.19' 
  }
}


 类似资料:
  • 我在Jetty上使用Spring Boot,似乎我不能在Gradle构建文件中排除所有的Tomcat依赖项。 build.gradle的相关部分: 然而,当我运行时,Tomcat的一部分仍然存在,并导致WebSocket出现问题: 为什么< code > spring-boot-starter-Tomcat 没有被排除在< code > spring-boot-starter-web 之外?

  • 我试图用JUnit和SLF4J测试来测试记录器的行为,这是“SLF4J的一个测试实现,它将日志消息存储在内存中,并提供检索它们的方法”。 我有一些将SLF4J作为传递依赖项的依赖项。我试图将SLF4J从我的测试配置中的所有依赖项中排除,但我仍然需要它来进行SLF4J测试。 我可以通过下面的代码将SLF4J排除在所有内容之外,但这显然也将它排除在我需要的SLF4J测试之外。 由于SLF4J是我的许多

  • 我想使用第三方供应商的jar。但是在这个jar中,我有Java包的旧版本我需要找到一些方法将包从主项目中排除。像这样的东西: 你能推荐一些解决方案吗?

  • 目前,如果我试图在Gradle中做类似的事情,排除将被忽略,并且下载所有六个工件。 我使用的是Gradle版本1.8。

  • 问题内容: 我有一个项目,该项目依赖于由供应商控制的工件。该工件包含一些我依赖的类,其中一些类较旧并且会引起问题。有没有办法让Maven自动扩展jar,删除类并将它们重新打包为依赖项?我会举一个例子。 所以- 我需要使用在项目网站,但我需要使用从神器。我无法修改Supplier:artifact或us:dependency。 有任何想法吗?! 问题答案: 从版本2.0.9开始,maven保留了类路

  • 是否有一种方法可以使用Gradle从一组中排除特定的jar?我尝试了下面的代码,但这删除了该组的所有jar