[英]How to exclude internal package (not maven dependency) from dependcies in Gradle
[英]Exclude Package From Gradle Dependency
我遇到了一個問題,即我的類路徑中出現了同一個類的多個版本。 有問題的類是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 客戶端中出現 class def not found 異常。
據我所知,此時我的選擇是:
javax.ws
包。我想繼續使用較新版本的球衣,所以 #2 將是我理想的解決方案,但我不確定它是否可能。 有誰知道如何解決這個問題? 如果這是不可能的,我願意接受其他建議。
您可以像這樣排除傳遞依賴模塊:
compile ('org.glassfish.jersey.core:jersey-client:2.17') {
exclude group: 'javax.ws.rs'
exclude module: 'javax.ws.rs-api'
}
參考: 50.4.7 這里
我發現 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'
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.