135

私の gradle プロジェクトでは、applicationプラグインを使用して jar ファイルを作成しています。実行時の推移的な依存関係の一部として、org.slf4j:slf4j-log4j12. (これは、少なくとも 5 つまたは 6 つの他の推移的な依存関係でサブ推移的な依存関係として参照されています。このプロジェクトは、Spring と Hadoop を使用しているため、キッチン シンク以外のすべてが取り込まれています...待ってはいけません...それもそこにあります :) )。

slf4j-log4j12ビルドした jar から jarをグローバルに除外したい。だから私はこれを試しました:

configurations {
  runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}

ただし、これは を含むすべての org.slf4jアーティファクトを除外しているようslf4j-apiです。デバッグ モードで実行すると、次のような行が表示されます。

org.slf4j#slf4j-api is excluded from com.pivotal.gfxd:gfxd-demo-mapreduce:1.0(runtime).
org.slf4j#slf4j-simple is excluded from com.pivotal.gfxd:gfxd-demo-mapreduce:1.0(runtime).
org.slf4j#slf4j-log4j12 is excluded from org.apache.hadoop:hadoop-common:2.2.0(runtime).

slf4j-log4j12各推移的な依存関係のソースを調べて、ブロックに個々のcompile foo { exclude slf4j... }ステートメントを含める必要はありません。dependencies

アップデート:

私もこれを試しました:

configurations {
  runtime.exclude name: "slf4j-log4j12"
}

ビルドからすべてを除外することになります! を指定したかのようにgroup: "*"

更新 2:

これにはGradleバージョン1.10を使用しています。

4

8 に答える 8

34

あなたのアプローチは正しいです。(状況によっては、 を使用したい場合がありますconfigurations.all { exclude ... }。)これらの除外が実際に複数の依存関係を除外している場合(それらを使用しているときに気づいたことはありません)、http://forums.gradle.orgでバグを報告してください。 、理想的には再現可能な例を示します。

于 2014-02-13T20:07:19.763 に答える
24

以下の例では除外します

spring-boot-starter-tomcat

compile("org.springframework.boot:spring-boot-starter-web") {
     //by both name and group
     exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' 
}
于 2015-12-08T12:29:03.950 に答える