Note
Jusqu'à présent, je l'ai utilisé pour générer un JAR tout-en-un.
--Utilisez gradle pour générer un seul fichier exécutable contenant des bibliothèques dépendantes https://qiita.com/mychaelstyle/items/9338f558903ac0c14bc3
Cependant, lorsque Gradle est défini sur 4,9, un Jar qui ne contient pas de fichiers dépendants est créé. J'ai changé de compilation en implémentation, donc
from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
La description
#### **`from configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) }`**
Quand je l'ai changé en, je me suis mis en colère comme suit
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
Si le nom est faux
api' not found.
Il semble qu'il soit clairement bloqué en interne.
Même si je l'ai recherché dans l'instruction d'erreur, seul le problème est sorti, alors je l'ai vérifié.
# Mesure
Il est dit que `` Configuration.isCanBeResolved () '' a été ajouté à partir de Gradle 3.3 ici.
- Gradle 3.4-rc-1: "Resolving configuration 'apiElements' directly is not allowed" #31 https://github.com/jeremylong/dependency-check-gradle/issues/31
En d'autres termes, le fait qu'il puisse ou non être collecté pour chaque configuration est différent.
---
J'ai donc cherché une liste de Jars dépendants à partir des configurations résolubles.
Selon cela, `` configurations '' est une collection, j'ai donc vérifié chacune avec le code suivant.
- 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 des configurations obtenues
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'
Parmi ceux-ci, j'ai senti que `` compileClasspath '' était quelque chose comme ça, alors je vais essayer de l'utiliser.
Le résultat est un Jar avec toutes les dépendances comme avant avec le code suivant:
from configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
Recommended Posts