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 :

  • ** Supprimer si besoin les répertoires et fichiers inutiles ** (par exemple produits par l’IDE : le répertoire.idea, les fichier .iml, …).
  • Certains fichiers peuvent être édités manuellement (ex. remplacer les valeurs par des variables du archetype.properties dans le pom.xml).
  • (optionnel) Le fichier META-INF/archetype-metadata.xml contient les paramètres de génération (produits en partie à partir du archetype.properties). Ce ficher peut être éditer pour contrôler plus finement la génération.

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.