Je suis actuellement en train de déplacer un projet de Ant à Maven. Conformiste comme je suis, je veux utiliser des conventions bien établies pour trouver groupId
et artifactId
, mais je ne trouve pas de conventions détaillées (il y en a, mais elles ne couvrent pas les points sur lesquels je me pose des questions).
Prenez ce projet par exemple, d'abord le package Java: com.mycompany.teatimer
La minuterie de thé est en fait deux mots, mais les conventions de dénomination des packages Java interdisent l'insertion de traits de soulignement ou de traits d'union, donc j'écris tout cela ensemble.
J'ai choisi l' groupId
identique de l'ID du package car je pense que c'est une bonne idée. C'est ça?
Enfin, je dois choisir un artifactId
, je suis actuellement allé pour teatimer
. Mais quand je regarde d' autres projets Maven, ils utilisent des traits d' union pour séparer les mots en artifactId
s, comme ceci: tea-timer
. Mais il n'a pas l' air bizarre quand concaténé à groupId
: com.mycompany.teatimer.tea-timer
.
Comment ferais-tu ceci?
Un autre exemple:
Nom du paquet: com.mycompany.awesomeinhouseframework
groupId
: com.mycompany.awesomeinhouseframework
(?)
artifactId
: awesome-inhouse-framework
(?)
la source
Réponses:
Votre convention semble raisonnable. Si je cherchais votre framework dans le repo Maven, je chercherais
awesome-inhouse-framework-x.y.jar
dans lecom.mycompany.awesomeinhouseframework
répertoire du groupe. Et je le trouverais là selon votre convention.Deux règles simples fonctionnent pour moi:
la source
La bizarrerie est très subjective, je suggère simplement de suivre la recommandation officielle:
la source
package
? Quelle est la différence avec groupId?Envisagez de suivre les étapes suivantes pour créer la première application Maven de base :
groupId
artifactId
version
la source
com.my.company.project
commegroupId
oucom.client.company.project
?Cependant, je ne suis pas d'accord avec la définition officielle du Guide des conventions de dénomination sur groupId, artifactId et la version qui propose que groupId doit commencer par un nom de domaine inversé que vous contrôlez.
com
signifie que ce projet appartient à une entreprise etorg
signifie que ce projet appartient à une organisation sociale. Ce n'est pas grave, mais pour ces domaines étranges comme xxx.tv, xxx.uk, xxx.cn, cela n'a pas de sens de nommer le groupId commencé par "tv", "cn.", Le groupId devrait fournir les informations de base du projet plutôt que du domaine.la source
myuser
et votre référentiel est appelémyrepo
, utilisez simplement le nom du packagecom.github.myuser.myrepo
. C'est gratuit et toujours unique.Considérez ceci pour obtenir un fichier jar entièrement unique:
la source