首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Gradle依赖项中排除包

从Gradle依赖项中排除包
EN

Stack Overflow用户
提问于 2015-06-19 16:20:35
回答 3查看 27.2K关注 0票数 11

我遇到了一个问题,同一个类的多个版本出现在我的类路径中。所讨论的类是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包。

下面是构建文件中的一个示例片段:

代码语言:javascript
复制
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,因为它使用了与新版本不同的包名,并且会导致类def在Jira客户机中找不到异常。

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

  1. 恢复到使用Jersey1.x及其jsr311的实现
  2. 让gradle将javax.ws包从旧球衣客户中排除在外。

我想继续使用更新版本的球衣,这样#2将是我的理想解决方案,但我不确定这是否可能。有人知道怎么做吗?如果不可能的话,我愿意接受其他建议。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-19 21:04:30

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

代码语言:javascript
复制
configurations.all {
  resolutionStrategy {
    // For a version that doesn't package javax.ws
    force 'com.sun.jersey:jersey-core:1.19' 
  }
}
票数 2
EN

Stack Overflow用户

发布于 2015-06-19 17:10:53

您可以排除如下所示的传递依赖模块:

代码语言:javascript
复制
   compile ('org.glassfish.jersey.core:jersey-client:2.17') {
      exclude group: 'javax.ws.rs'
      exclude module: 'javax.ws.rs-api'
   }

参考文献:50.4.7这里

票数 16
EN

Stack Overflow用户

发布于 2022-04-12 10:41:16

如下所示排除组和模块。

例:

代码语言:javascript
复制
implementation('org.apache.httpcomponents:httpclient:4.5.13') {
    exclude group: 'commons-codec', module: 'commons-codec'
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30942825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档