我有一个带有单个模块的gradle项目。
我已宣布'提供了'配置以在父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作为编译依赖项,但我希望使用它的项目来决定它们自己的实现......
答案 0 :(得分:0)
IntelliJ IDEA Ultimate build 163.12024.16也遇到了同样的问题。我无法修复它。但是当我升级到构建171.4249.39时,它神奇地消失了。 (当再次使用上一个版本时,范围会回到不正确的"再次提供")