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工具窗口,它也声明了第二个到最后一个依赖关系,即使它具有编译范围:
我希望看到的依赖列出(Compile)
旁边这个工具窗口,而不是(Provided)
。
所以问题是:为什么我不是?
是否因为提供了slf4j(slf4j-simple)的实现,并且依赖于slf4j-api,因此也自动提供了该提供者?我如何阻止?我应该阻止它吗?我想API作为一个编译的依赖项,但我想要项目,使用它来决定自己的实现...