2016-07-26 127 views
1

我有一个单个模块的gradle项目。为什么Gradle没有在IntelliJ 2016的sourceSets下正确应用依赖范围?

我已经宣布了“设置”的配置,以使在父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我已经宣布以下相关的模块:

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' 
} 

当我扩展了Gradle工具窗口,它也声明了第二个到最后一个依赖关系,即使它具有编译范围:

Screen shot of Gradle tool window

我希望看到的依赖列出(Compile)旁边这个工具窗口,而不是(Provided)

所以问题是:为什么我不是?

是否因为提供了slf4j(slf4j-simple)的实现,并且依赖于slf4j-api,因此也自动提供了该提供者?我如何阻止?我应该阻止它吗?我想API作为一个编译的依赖项,但我想要项目,使用它来决定自己的实现...

回答

0

我有与IntelliJ IDEA Ultimate版本163.12024.16非常相同的问题。我无法修复它。但是当我升级到171.4249.39时,它神奇地消失了。 (再次使用之前的版本时,示波器会再次返回错误的“提供”)。

相关问题