Ich habe ein Großprojekt mit einem einzigen Modul.Warum verwendet Gradle den Abhängigkeitsbereich nicht korrekt unter sourceSets in IntelliJ 2016?
Ich habe die 'vorgesehen' Konfiguration erklärt versehen Bereichs-Abhängigkeiten in der übergeordneten build.gradle
Datei zu aktivieren:
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...
}
Im Modul build.gradle
ich die folgenden Abhängigkeiten deklariert haben:
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'
}
Wenn Ich erweitere das Gradle-Werkzeugfenster, es deklariert auch die vorletzte Abhängigkeit dort, auch wenn es einen Übersetzungsbereich hat:
Ich würde erwarten, dass die Abhängigkeit aufgeführt mit (Compile)
neben ihm in diesem Tool-Fenster, um zu sehen, nicht (Provided)
.
Die Frage ist also: Warum bin ich nicht?
Liegt es daran, dass die Implementierung von slf4j (slf4j-simple) zur Verfügung gestellt wird und von slf4j-api abhängt, also automatisch auch diese zur Verfügung stellt? Wie höre ich damit auf? Sollte ich damit aufhören? Ich möchte die API als eine kompilierte Abhängigkeit, aber ich möchte Projekte, die dies verwenden, um über ihre eigene Implementierung zu entscheiden ...