Convention de nommage pour les Artefacts Maven
Nous sommes en train d'essayer de mavenize les projets existants dans notre société. Nous avons exécuté un POC et sont en train de documenter nos apprentissages et des lignes directrices. Je viens de la convention d'appellation suivante pour les artefacts maven. Veuillez nous faire part de vos commentaires sur le même
Remarque: Dans notre société, projectname est toujours unique
Pour un seul niveau multi module de projet maven
Parent (pom)
- groupId : org.nom de la société.projectname
- artifactId : org.nom de la société.projectname
- version : x.x.x
par exemple : org.nom de la société.projectname:org.nom de la société.projectname-1.0.0.pom
Modules (jar)
- groupId : org.nom de la société.projectname
- artifactId : org.nom de la société.projectname.modulename
- version : x.x.x
par exemple: org.companyname.projectname:org.companyname.projectname.modulename-1.0.0.jar
Pour un multi-niveau multi module de projet maven
Parent (pom)
- groupId : org.nom de la société.projectname
- artifactId : org.nom de la société.projectname
- version : x.x.x
par exemple : org.nom de la société.projectname:org.nom de la société.projectname-1.0.0.pom
SubParent (pom)
- groupId : org.nom de la société.projectname
- artifactId : org.nom de la société.projectname.sous-catégorie
- version : x.x.x
par exemple : org.nom de la société.projectname:org.nom de la société.projectname.sous-catégorie-1.0.0.pom
Module (jar)
- groupId : org.nom de la société.projectname
- artifactId : org.nom de la société.projectname.sous-catégorie.modulename
- version : x.x.x
par exemple : org.companyname.projectname:org.companyname.projectname.subcategory.modulename-1.0.0.jar
Vous devez vous connecter pour publier un commentaire.
De l'OMI, vous ne devez pas inclure
org.companyname
dans l'artifactId - c'est un peu double emploi avec les informations déjà présentes dans le groupId, rendant ainsi l'objet des noms plus et moins lisible.Mise à jour: pour info, en regardant à travers les dépendances de notre projet, je vois de nombreux exemples similaires, par exemple
Et puis il y a beaucoup où la groupe et de l'artefact Identifiants sont les mêmes nom non qualifié, par exemple:
Mais je n'ai pas vu de d'avoir qualifié de l'ID de groupe et identique d'un artefact ID (par exemple pour Log4J serait
org.apache.log4j:org.apache.log4j
).À l'aide d'un nom non qualifié pour la groupId correspondant à la artifactId (par exemple
log4j
) est un ancien obsolète pratique qui n'est pas recommandé: c'est mauvais au niveau du système de fichiers, il génère référentiel "désordre", il fait des artefacts en plus difficile à trouver lors de la navigation sur un référentiel (même si la plupart des gens utilisent un moteur de recherche, de nos jours).La recommandation est d'inclure votre nom de domaine dans la groupId et je ne serait certainement pas le répéter dans l' artifactId (à ma connaissance, Le printemps n'est PAS de faire que - sauf peut-être pour OSGI artefacts?).
Voici ce que j'utilise:
Parent (pom)
par exemple : org.nom de la société.projectname:racine-1.0.0.pom
SubParent (pom)
par exemple : org.nom de la société.projectname:sous-catégorie-mère-1.0.0.pom
Module (jar)
par exemple : org.companyname.projectname:modulename-1.0.0.jar
Et j'utilise des conventions pour la
<description>
élément pour avoir une vue d'ensemble propre au cours de réacteur construit. Voici un exemple sur un projet de compagnie:C'est fortement inspiré par Vincent Massol, de façon à organiser de grands construit comme il l'a fait avec XWiki ou de la Cargaison.
groupId
pour chaque sous-module?<name>
au lieu de<description>
pour générer la sortie de la Réacteur ordre de compilation.