Maven nuiton pom
2009-08-22
Le projet mavenpom est un pom de type Corporate dont héritent tous les projets code Lutin.
Depuis la version 3.3, le changelog se trouve ici.
Il ne sera plus maintenu sur cette page.
Depuis la version 3.4.2, on utilise pour se connecter sur le serveur redmine de l'apiKey plutôt que des login/password.
Pour ce faire il faut ajouter dans votre settings.xml une balise
<privateKey>{Votre api key encodée}</privateKey>dans chacun des serveurs de login redmine, à savoir donc :
Vous trouverez votre apiKey (pour chaque forge) dans la page de votre compte.
Depuis la version 1.4, maven-helper-plugin devien helper-maven-plugin (tout du moins son GAV). Le site du projet reste bien (pour le moment) http://maven-site.nuiton.org/maven-helper-plugin.
La version 3.0.3 corrige les problèmes suite au passage sur le maven-site-plugin 3.0.
L'héritage des définitions de site ne fonctionne plus, on ne peut donc plus gérer cela au niveau de mavenpom et ses fils.
Il faut donc dans chaque projet client ajouter ceci :
<distributionManagement>
<site>
<id>${platform}</id>
<url>${our.site.repository}/${projectId}</url>
</site>
</distributionManagement>Les variables *site.repository* et *site.server* ne sont donc plus utiliséees et sont supprimées sauf pour les projets héritants du mavenpom4labs.
On utilise désormais le déployement en http via nexus.
Il faut donc avoir un nouveau server dans son settings.xml
<!-- nexus deployment user -->
<server>
<id>nuiton-nexus-deploy</id>
<username>deployment</username>
<password>{le mot de passe qui va bien :)}</password>
</server>La version 3.0 survient avec une nouvelle forge http://forge.codelutin.com
Cette forge est basée sur redmine et cela a nécessité du coup de revoir légèrement l'utilisation de la variable platform et des serveurs dans le settings.xml.
Il faut donc ajouter les serveurs suivants (dans le settings.xml) :
<!-- depot site maven sur nuiton.org -->
<server>
<id>nuiton.org</id>
<username>publish</username>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<!-- depot maven + site maven sur chorem.org -->
<server>
<id>chorem.org</id>
<username>publish</username>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<!-- depot maven + site maven sur forge.codelutin.com -->
<server>
<id>forge.codelutin.com</id>
<username>publish</username>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<!-- depot maven + site maven sur le labs -->
<server>
<id>labs.libre-entreprise.org</id>
<username>votre login sur le labs</username>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<!-- login to forge.codelutin.com -->
<server>
<id>redmine-forge.codelutin.com</id>
<username>votre login sur le redmine forge.codelutin.com </username>
<password>{votre password encodé sur forge.codelutin.com}</password>
</server>
Depuis la version 2.5, chaque librairie ou plugin utilisé dans le mavenpom ou un de ses fils est configurable via une propriété, il s'agit d'une généralisation de ce qui était déjà fait sur nos propres plugins et les librairies.
Cela permet de pouvoir dans un projet utilisant un des mavenpom de pouvoir changer les versions de librairies ou plugins sans avoir à redéfinir les dépendances.
Depuis la version 2.4, on introduit on gère les librairies les plus souvent utilisées dans nos projets et ceci pour éviter de repasser dans les poms : c'est plus facile de changer de mavenpom que de changer les versions dans chaque projet.
Voir la page des propriétés pour connaitre toutes les librairies connues au niveau du mavenpom.
On a aussi renommer toutes les propriétés de versin en utilisant le camelStyle pour faire comme les petits copains de chez Maven. Par exemple maven.version devient mavenVersion.
On a ajouté un profile analyze-dependencies qui est automatiquement déclanché lors d'une release pour vérifier la consistance des dépendances d'un projet.
Pour le reste, c'est ici.
Depuis la version 2.3, un nouveau type de pom nommé du mavenpom4redmineAndCentral pour tous les projets déployés sur redmine et synchronisés sur Maven central.
Il hérite du mavenpom4redmine et rajoute la configuration pour que cela soit déployé sur maven central.
Pour plus d'informations, voir la page de de mavenpom4redmineAndCentral.
La configuration central-safe a été améliorée, il s'agit désormais d'un profile central-safe qui n'est pas activé lors d'une release.
Les projets central-safe modifie la configuration du plugin release pour inclure explicitement ce profile et en prepare et en perform.
Depuis la version 2.2.1 on utilise maven-license-plugin 2.3.
Cela permet d'améliorer la qualité des fichiers THIRD-PARTY générés (dépendances sans license, licenses dupliquées,...).
On a aussi dans cette version de mavenpom ajouté une configuration pour permettre en phase de préparation de release (release:prepare) d'activer les profiles de releases afin de pouvoir détecter d'éventuelles problèmes avant le tag svn.
Depuis la version 2.2 on a amélioré la configuration des serveurs de déployement et introduit la notion de projet central-safe.
Un tel projet répond aux pré-requis d'un projet synchronisable sur central :
Pour plus d'informations, voir la page de configuration des serveurs.
Voir la page des propriétés.
Mavenpom définit un certain nombre de profiles. Certains sont dédiés exclusivement à la préparation de releases, tandis que d'autres permettent de réaliser certaines tâches pendant le développement (mise à jour des entêtes des fichiers sources par exemple).
La page des profiles décrit l'ensemble des profiles.
On effectue sur le pom des contrôles de conformités via le plugin maven-enforcer-plugin.
Mavenpom fixe les versions d'un certain nombre de plugins et ceci pour plusieurs raisons :
On distingue deux types de plugins :
Nos plugins ne doivent pas être décrit dans mavenpom et ceci pour la simple raison que nos propres plugins utilisent mavenpom, 3 exceptions existent cependant :
Tous nos autres plugins ne sont pas référencés ici et doivent donc être entièrement définies (version + configuration) dans vos pom.
Avant de vouloir utiliser un nouveau plugin dans votre pom, consulter en premier la page des plugins connus par mavenpom.
Si le plugin est connu, alors pas de question à se poser, on peut l'utiliser sans spécifier sa version utilisant celle définit dans mavenpom.
Si le plugin n'existe pas, faites une demande d'évolution sur le projet mavenpom, il sera rapidemment ajouté et vous pourrez l'utiliser en vous plaçant sur la dernière snapshot de mavenpom.