Comment itérer gradle dépendances dans la coutume gradle plugin?
J'ai suivi ce guide:
http://www.gradle.org/docs/current/userguide/custom_plugins.html
pour créer autonome plugin gradle avec la structure suivante/fichiers:
my-gradle-plugin
> src
> main
> java
> com
> mygroup
> MyGradlePlugin.groovy
> build.gradle
> settings.gradle
construire.gradle :
apply plugin: 'groovy'
dependencies {
compile gradleApi()
groovy localGroovy()
}
apply plugin: 'maven'
repositories {
mavenCentral()
}
group = 'com.mygroup'
version = '1.0.0-SNAPSHOT'
MyGradlePlugin.groovy :
package com.mygroup
import org.gradle.api.*
class MyGradlePlugin implements Plugin<Project> {
void apply(Project project) {
print " project.name " + project.name + "\n"
print " project.dependencies " + project.dependencies + "\n"
//How do we iterate each dependency and print artifactId, group, version??
//project.dependencies.each {
// compile(it) {
// print it.next()
// print it.name
// }
// }
project.configurations.each {
print it.dump()
}
}
}
Dans un autre projet, je utiliser/appliquer ce plugin:
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'
repositories {
mavenLocal()
}
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath group: 'com.mygroup', name: 'my-gradle-plugin', version: '1.0.0-SNAPSHOT'
}
}
dependencies {
compile group: 'commons-codec', name: 'commons-codec', version: '1.4'
compile group: 'commons-beanutils', name: 'commons-beanutils', version: '1.7.0'
}
install.doLast {
apply plugin: 'my-gradle-plugin'
}
Mais comment puis-je parcourir les communes les dépendances de la méthode appliquer dans MyGradlePlugin.groovy et d'imprimer leurs coordonnées (artifactId, groupId, version)?
Je suppose que vous voulez parcourir toutes les dépendances de la configuration
compile
?OriginalL'auteur u123 | 2012-11-02
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est une vieille question, mais comme il n'est pas sélectionné réponse, je vais jeter un exemple que j'ai utilisé. Ceci est basé sur l'exemple de la section 49.8.2.2 de la gradle docs.
Je l'utilise pour faire la coutume de la résolution des dépendances, mais vous pouvez faire ce que vous voulez à l'intérieur de la dépendance de l'itération. Notez que cela fonctionne parce que son passage une fermeture qui est exécutée après la phase de configuration.
Code du module:
OriginalL'auteur Michael Larsen
Le problème est que le graphe de dépendance est disponible uniquement après que le projet est entièrement évaluée. C'est pourquoi vous ne pouvez pas compter sur qui, directement, dans la
apply
méthode. Vous devez reporter l'exécution à l'aide de laafterEvaluate
méthode. Le code suivant va faire l'affaire:Mise à JOUR: Suite à la question des mises à jour et des discussions dans les commentaires et de chat vous pouvez également effectuer les opérations suivantes:
Le code de la réponse fonctionne, je l'ai testé avec gradle 1.2. Dans votre cas, avec l'installation.doLast, je dirais, c'est un peu bizarre plugin d'utilisation, si vous avez vraiment besoin d'imprimer une liste des dépendances après l'installation de la tâche, alors vous pouvez simplement placer le code dans doLast, pourquoi à l'aide de plugin pour ça?
La motivation est le fait que plusieurs projets de besoins pour appliquer ce plugin et je ne veux pas dupliquer le code pour tous ces projets. Le mettre dans un plugin permet d'écrire uniquement le script une fois.
oui, mais Gradle système de plugin est assez avancé pour éviter des trucs spéciaux comme " appeler appliquer sur le plugin que dans l'installation.onLast pour obtenir cette caractéristique commune ". Vous pouvez définir que le comportement requis à l'intérieur de votre plugin appliquer la méthode et de reporter l'évaluation pour le point qu'il est nécessaire. Btw. Dans votre question initiale question, il n'était pas clair, vous vouliez imprimer des dépendances comme la dernière étape de la construction.
Vous pouvez utiliser gradle.buildFinished fermeture de définir des comportements particuliers que vous voulez: gradle.org/docs/current/groovydoc/org/gradle/api/invocation/....
OriginalL'auteur Andrey Adamovich