Gradle : alternative à Maven ?

Pour ceux qui comme moi sont allergiques au Xml verbeux de Ant et à la lourde infrastructure de Maven, une alternative commence à émerger.
Gradle se propose de réunir le meilleur de ces deux outils (et même plus) en simplifiant le tout grâce à un DSL (Domain-Specific Language) basé sur un script Groovy, donc très proche de la syntaxe Java :

•    Build par tâche à la Ant

createTask('hello') {
   println 'Bonjour Objet Direct!'
}
createTask('intro', dependsOn: 'hello') {
   println "Je suis Gradle"
}
>gradle -q intro Bonjour Objet Direct! Je suis Gradle

•    Build par convention à la Maven

Plugin Java (facultatif) offrant des tâches prédéfinies équivalentes aux phases de build Maven (clean, compile…) pour une même structure de projets.

•    Build multi-projets avec injection de configuration

subprojects {
   usePlugin('java')
   sourceCompatibility = 1.5
   targetCompatibility = 1.5
}

•    Gestion de dépendances basée sur Apache Ivy simplifiée / Support des infrastructures existantes de repository Maven ou Ivy (sans fichiers pom.xml ou ivy.xml)

dependencies {
   addMavenStyleRepo('myrepo', 'http://repo.objetdirect.com')
   compile "org.hibernate:hibernate:3.0.5"
}

Très bien documenté, gradle semble prometteur mais souffre du manque de plugins disponibles malgré la présence d’un intéressant plugin War déployant l’application sur Jetty pour exécuter des tests d’intégration.

Ce manque est compensé par le support naissant des outils d’intégration continue (plugin Hudson disponible) et l’excellente intégration de Ant offerte par Groovy qui permet de réutiliser les tâches Ant d’une façon plus élégante que dans un fichier build.xml:

createTask('distManuals' ) {
   ant.zip(destfile: 'dist/manual.zip') {
      fileset(dir: 'docs', excludes: 'ChangeLog.txt')
   }
}

2 réflexions au sujet de « Gradle : alternative à Maven ? »

  • 19 mai 2009 à 22 h 23 min
    Permalink

    Excellent !! Il faut se mettre à Gradler !!

  • 20 mai 2009 à 15 h 45 min
    Permalink

    Le plugin war de Gradle est dédié à la génération d’une archive Web. Le déploiement sous Jetty est indépendant de ce plugin. Un plugin jetty dédié assure le déploiement sous ce serveur.

    Le manque de plugins de Gradle est loin d’être aujourd’hui le défaut majeur de l’outil. Utilisant l’outil en production depuis 8 mois, il répond a l’ensemble de mes besoins, en particulier grâce à la possible réutilisation native de toute tâche Ant.
    Aujourd’hui, le défaut majeur de Gradle est son manque d’outillage (support IDE) et tout simplement son manque de notoriété.

    Sa plus grosse plus value est sa flexibilité en pouvant utiliser les conventions de Maven à la demande (structure de répertoires, cycles de vies, conventions de noms).
    Son autre plus gros avantage est sa gestion de dépendances. En particulier, les jars peuvent être stockés aussi bien dans un SCM que dans des repositories Maven ou Ivy. Dans les 2 cas, il gère les dépendances transitives. Et tout ceci grâce à l’utilisation du plus puissant et flexible gestionnaire de dépendance du marché : Ivy.

    Et il ne faut pas uniquement considérer Gradle comme une alternative à Maven. Gradle peut jouer dans certaines situations un rôle complémentaire en pouvant par exemple générer et déployer des artefacts et meta-données Maven.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *