Fabriquer un archetype Maven

Cette page est une introduction minimale à la création d’archétypes Maven (des modèles de projets). Pour plus de détails, http://maven.apache.org/archetype/maven-archetype-plugin/

Pour créer un archétype Maven, il faut commencer par créer un répertoire de travail. Dans ce répertoire, créer un fichier

archetype.properties
#Propriétés standards
archetype.groupId=fr.univtln.login
archetype.artifactId=myapp
archetype.version=1.0-SNAPSHOT

#Paramètres de filtrage
archetype.languages=java

#Propriétés personnelles
scmURL=scm:git:ssh://git@lsis.univ-tln.fr/samplegit.git

qui contient des propriétés (standards ou non) et leur valeur par défaut. Quand l’archétype va être produit chaque valeur (par ex. fr.univtln.login) va être recherchée dans les fichiers java et remplacée par une variable (par ex. ${archetype.groupId}) (cf. http://maven.apache.org/archetype/maven-archetype-plugin/examples/create-with-property-file.html).

Dans ce répertoire, créer le projet qui servira de base, cela peut être fait en utilisant un archétype déjà existant avec la commande mvn archetype:generate. Le projet peut être modifié comme un projet classique (ajout de .gitignore, modification du pom.xml, …).

A partir de la racine de ce projet, l’exécution de la commande

mvn archetype:create-from-project -Darchetype.properties=../archetype.properties

produit l’archétype dans le répertoire target/generated-sources/archetype.

Les sources du modèle du projet se trouve dans target/generated-sources/archetype/src/main/resources/archetype-resources/

On peut vérifier que le squelette du code est correct :

L’archétype peut ensuite être installé (mvn install depuis target/generated-sources/archetype) dans le repository local (.m2/repository).

Il peut ensuite être testé localement en créant un projet depuis un autre répertoire avec mvn archetype:generate … (cf. Projet Java de base avec Maven pour le passage des paramètres).

L’archétype peut être déployé sur un repository partagé en ajoutant les paramètres de l’entrepôt Maven dans target/generated-sources/archetype/pom.xml (cf. Utiliser un repository Maven (Artifactory)) puis avec mvn deploy.