Memo
Bisher habe ich damit eine All-in-One-JAR generiert.
Wenn Gradle jedoch auf 4.9 eingestellt ist, wird Jar erstellt, das keine abhängigen Dateien enthält. Ich habe also die Kompilierung in die Implementierung geändert
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
Die Beschreibung
#### **`from configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) }`**
Als ich es änderte, wurde ich wie folgt wütend
C:\~~>gradlew
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\~~\build.gradle' line: 129
* What went wrong:
A problem occurred evaluating root project '~'.
> Resolving configuration 'implementation' directly is not allowed
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 0s
Wenn der Name falsch ist
api' not found.
Es scheint, dass es intern eindeutig blockiert ist.
Selbst wenn ich in der Fehleranweisung danach gesucht habe, ist nur Issue herausgekommen, also habe ich es nachgeschlagen.
# Messen
Es wird gesagt, dass hier `` `Configuration.isCanBeResolved ()` `` aus Gradle 3.3 hinzugefügt wurde.
- Gradle 3.4-rc-1: "Resolving configuration 'apiElements' directly is not allowed" #31 https://github.com/jeremylong/dependency-check-gradle/issues/31
Mit anderen Worten, ob es für jede Konfiguration erfasst werden kann oder nicht, ist unterschiedlich.
---
Also suchte ich nach einer Liste abhängiger Gläser aus den auflösbaren Konfigurationen.
Demnach ist `` `Konfigurationen``` eine Sammlung, daher habe ich jede mit dem folgenden Code überprüft.
- https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/ConfigurationContainer.html
```gradle
configurations.stream().forEach {
println "################### " + it
if (it.canBeResolved) {
it.collect {
println it.isDirectory() ? it : zipTree(it)
}
}
}
Liste der erhaltenen Konfiguration
configuration ':annotationProcessor'
configuration ':api'
configuration ':apiElements'
configuration ':archives'
configuration ':compile'
configuration ':compileClasspath'
configuration ':compileOnly'
configuration ':default'
configuration ':implementation'
configuration ':junitPlatform'
configuration ':runtime'
configuration ':runtimeClasspath'
configuration ':runtimeElements'
configuration ':runtimeOnly'
configuration ':testAnnotationProcessor'
configuration ':testCompile'
configuration ':testCompileClasspath'
configuration ':testCompileOnly'
configuration ':testImplementation'
configuration ':testRuntime'
configuration ':testRuntimeClasspath'
configuration ':testRuntimeOnly'
Von diesen hatte ich das Gefühl, dass `` `compileClasspath``` so etwas ist, also werde ich versuchen, es zu verwenden.
Das Ergebnis ist ein Jar mit allen Abhängigkeiten wie zuvor mit dem folgenden Code:
from configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
Recommended Posts