Actuellement en alpha 5, la future version de Maven pointe le bout de son nez. Au menu de cette nouvelle version majeure de Maven, de nombreuses nouveautés et améliorations issues des remontées d'information et des features request de la communauté.
La plus notable amélioration en terme de performance est la parallélisation (multi-threading) du build ce qui va optimiser l'utilisation des PIC mais aussi accélérer le build sur le poste du développeur. Toujours dans le registre de l'accélération du développement, l'équipe de Maven est en train de finaliser une nouvelle fonctionnalité de compilation incrémentale liée au plugin m2eclipse qui promet des compilations et des builds instantanés au sein d'Eclipse.
Autre nouveauté majeure, la possibilité d'écrire le fichier POM dans un autre format que XML. Pour le moment, il est question de Ruby, Groovy, Python ou YAML. L'objectif est clairement de pouvoir rédiger un POM de manière moins verbeuse qu'avec le XML.
Voici un exemple de POM en Groovy :
project(modelVersion: '4.0.0') {
artifactId 'myFirstGroovyPom'
packaging 'war'
name 'My First Groovy Pom'
dependencies {
dependency('javax.servlet:jstl:1.2')
dependency('junit:junit:4.7:test')
}
build {
plugins {
plugin('org.mortbay.jetty:maven-jetty-plugin:6.1.14') {
configuration {
scanIntervalSeconds '3'
}
}
}
}
}
Bien que cela offre une certaine souplesse et une certaine concision, les outils utilisés pour lire un POM autrement qu'en XML doivent encore se mettre à jour pour pouvoir restituer tous ces nouveaux formats. De plus, les développeurs devront savoir lire des POM dans différents formats, à fortiori si aucun nouveau format ne sort du lot rapidement.
D'autres nouveautés sont remarquables comme le chainage de repository, l'apparition de messages d'erreur explicites avec un lien direct vers la documentation, l'injection de dépendance à l'aide de Google Guice (dans Maven 3.1) ou encore l'externalisation des dépendances dans un fichier. Ce dernier point est le plus discutable car il va un peu à l'encontre de la philosophie Maven du « tout dans un seul fichier » mais il s'agit semble-t-il d'une fonctionnalité très demandée.
Il est important de noter que toutes ces évolutions ont été réalisées en maintenant une compatibilité ascendante quasi parfaite. Ainsi, très peu de plugins écrits pour Maven 2 ne seront pas compatibles avec Maven 3. Pour les quelques cas pouvant poser problème, des recommandations permettent aux développeurs des plugins de rapidement les mettre à jour. Il était clairement primordial de ne pas déprécier l'énorme écosystème construit autour de Maven.
Présentation de Jason van Zyl sur Maven 3
Commentaires