У меня есть проект градиента с одним модулем.Почему Gradle не применяет область зависимостей правильно в sourceSets в IntelliJ 2016?
Я объявил «при условии» конфигурации для обеспечения при условии, контекстные зависимостей в родительском 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'
}
Когда Я расширяю окно инструмента «Грейдл», он объявляет вторую и последнюю зависимость там, как это предусмотрено, хотя и имеет область компиляции:
я ожидал бы увидеть зависимость перечисленных с (Compile)
рядом с ней в этом окне инструмента, не (Provided)
.
Итак, вопрос: почему я не?
Это потому, что реализована реализация slf4j (slf4j-simple) и зависит от slf4j-api, поэтому автоматически делает это предоставленным? Как это остановить? Должен ли я прекратить это? Я хочу, чтобы API как скомпилированная зависимость, но мне нужны проекты, которые используют это, чтобы принять решение об их собственной реализации ...