1. ホーム
  2. java

[解決済み] Gradleです。バージョン分類器による推移的依存関係をオーバーライドする

2022-02-10 04:57:47

質問

私のプロジェクトで宣言された依存関係の1つは、次のような推移的依存関係を持っています。 'com.google.guava:guava:15.0' . しかし、WAS/Weblogic にデプロイした私のアプリケーションは、CDI の問題のために動作せず、その問題は 'com.google.guava:guava:15.0:cdi1.0' . (同じバージョンですが、クラシファイアがあります) ビルドとパッケージング中に、このjarを使用するようにgradleに指示する必要があります。私は、jar固有のバージョン分類子で、この推移的依存関係をどのように乗り越えられるかについて考えています。

以下のアプローチを試してみました。

  1. 依存関係を明示的に追加した。 compile 'com.google.guava:guava:15.0:cdi1.0' . しかし、両方の jar が結果の WAR に含まれるようになりました。
  2. 依存関係を明示的に追加し、解決策を定義しました。

    configurations.all {
        resolutionStrategy {
            force 'com.google.guava:guava:15.0:cdi1.0'
        }
    }
    
    

    これでもダメだったんです。

  3. バージョンを確認し、変更する解決策を定義しました。

    configurations.all {
         resolutionStrategy.eachDependency { DependencyResolveDetails details ->
             if (details.requested.group + ":" + details.requested.name == 'com.google.guava:guava') {
                details.useVersion "15.0:cdi1.0"
                //details.useTarget "com.google.guava:guava:15.0:cdi1.0"
            }
        }
    }
    
    

    これでもダメだったんです。

この問題にどのように取り組むことができるか、あなたの提案が必要です。

解決方法は?

現在、クラシファイアは、まだ考慮されていません。 レゾリューションストラテジー . 回避策としては、依存関係を宣言する際にトランジティブなGuavaライブラリを除外し、Guavaの cdi1.0 のバージョンを明示的に指定します。

dependencies {
    compile ("org.acme:someDependency:1.0"){
        exclude group: 'com.google.guava', module: 'guava'
    }       
    compile "com.google.guava:guava:15.0:cdi1.0"
}