2016-07-26 8 views
1

私は、単一のモジュールを持つ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番目から最後の依存関係を指定して宣言します。

Screen shot of Gradle tool window

私は、このツールのウィンドウでその横に(Compile)に記載されている依存関係、ない(Provided)を見ることを期待します。

質問は次のとおりです。私はなぜそうではないのですか?

slf4j(slf4j-simple)の実装が提供され、slf4j-apiに依存するので、それは自動的に提供されますか?それをどうやって止めるの?私はそれを止めるべきですか?私はコンパイルされた依存関係としてAPIを望んでいますが、私は自分の実装を決定するためにこれを使うプロジェクトを望みます...

答えて

0

私はIntelliJ IDEA Ultimateビルド163.12024.16で非常に同じ問題を抱えていました。私はそれを修正することができませんでした。しかし、私は171.4249.39をビルドするようにアップグレードすると、魔法のように消えました。 (以前のビルドを再び使用すると、スコープは誤った "提供された"に再び戻ります。)

関連する問題