プロジェクトAがプロジェクトBをコンパイル依存として参照し、プロジェクトBがライブラリCをランタイム依存性として参照する、グラデル依存性管理で奇妙な動作が発生します。今度は私のプロジェクトでライブラリCのクラスを使用できます。gradleにコンパイル依存性としての推移的ランタイム依存性が含まれています
私の質問:(これはバグですか、機能ですか?
問題は2.9のGradleと2.10と、次の最小限のセットアップを再現することができます:あなたが見ることができるように
// settings.gradle
include ':A', ':B'
// build.gradle
allprojects {
apply plugin: 'java'
apply plugin: 'maven'
repositories {
mavenLocal()
mavenCentral()
}
}
project(':A') {
dependencies {
compile project(':B')
}
}
project(':B') {
dependencies {
runtime "org.slf4j:slf4j-log4j12:1.7.13"
}
}
、Gradleの:A:dependencies
は
[...]
compile - Compile classpath for source set 'main'.
\--- project :B
\--- org.slf4j:slf4j-log4j12:1.7.13
+--- org.slf4j:slf4j-api:1.7.13
\--- log4j:log4j:1.2.17
[...]
とのlog4jを使用してを示していプロジェクトAに常駐するJavaコードでは完全に可能です。
マイケルにお尋ねいただきありがとうございます。この場合のgradleの振る舞いは完全に直感的ではありません:-( – Peti