私は、単一のモジュールを持つgradleプロジェクトを持っています。IntelliJ 2016のソースセットでGradleが依存スコープを正しく適用しないのはなぜですか?
dependencies {
testCompile 'org.elasticsearch:elasticsearch:2.3.1:tests'
compile 'org.apache.commons:commons-io:1.3.2'
compile 'org.apache.commons:commons-lang3:3.4'
compile 'org.elasticsearch:elasticsearch:2.3.1'
compile 'org.slf4j:slf4j-api:1.7.12'
provided 'org.slf4j:slf4j-simple:1.7.12'
}
:私は次の依存関係を宣言したbuild.gradle
モジュールで
subprojects {
apply plugin: 'maven'
apply plugin: 'java'
apply plugin: 'idea'
configurations {
provided
}
idea {
module {
scopes.PROVIDED.plus += [configurations.provided]
}
}
sourceSets {
main.compileClasspath += configurations.provided
test.compileClasspath += configurations.provided
test.runtimeClasspath += configurations.provided
}
... other stuff...
}
:私は親build.gradle
ファイルで提供スコープの依存関係を有効にするには、「提供する」構成を宣言した
私は、Gradleツールのウィンドウを展開し、コンパイルスコープを持っていても、2番目から最後の依存関係を指定して宣言します。
私は、このツールのウィンドウでその横に(Compile)
に記載されている依存関係、ない(Provided)
を見ることを期待します。
質問は次のとおりです。私はなぜそうではないのですか?
slf4j(slf4j-simple)の実装が提供され、slf4j-apiに依存するので、それは自動的に提供されますか?それをどうやって止めるの?私はそれを止めるべきですか?私はコンパイルされた依存関係としてAPIを望んでいますが、私は自分の実装を決定するためにこれを使うプロジェクトを望みます...