マルチプロジェクトのGradleビルドがあります。にSub-Project-A
依存していSub-Project-B
ます。Sub-Project-B
にコンパイル時の依存関係がありSLF4J
ます。ライブラリに対してコンパイルできるようにしたくはありませんが、実行時にコードを実行できるようにしたいと考えています。Sub-Project-A
SLF4J
Sub-Project-B
私ができると思ったのは、コンパイル時の依存関係を Sub-Project-B に追加してから、次を追加することです。
configurations {
compile.exclude group: 'org.slf4j'
}
サブプロジェクト A へ。これにより、コードが slf4j API に対してコンパイルされなくなりますが、slf4j ライブラリがサブプロジェクト A ランタイムに存在することも防止されるため、コードSub-Project-B
がアクセスされるとすぐに ClassNotFoundException が発生します。
これを機能させるのは非常に困難だったので、何か間違ったことをしているに違いないと思いますが、これは不合理な設定のようには感じません。ビルド内のサブプロジェクトの 1 つだけが、コンパイル時にサード パーティのライブラリにアクセスできるようにします。