Je suis actuellement en train de transférer un projet de Ant à Maven. Aussi conformiste que je sois, je veux utiliser des conventions bien établies pour trouver groupId
et artifactId
, mais je ne trouve aucune convention détaillée (il en existe certaines, mais elles ne couvrent pas les points que je me pose).
Prenons par exemple ce projet, le package Java: com.mycompany.teatimer
Tea timer est en fait deux mots, mais les conventions de dénomination des paquets Java interdisent l’insertion de tirets de soulignement ou de tirets, c’est pourquoi je les écris tous ensemble.
J'ai choisi l'identifiant groupId
identique à l'ID du paquet parce que je pense que c'est une bonne idée. Est ce
Enfin, je dois choisir une artifactId
, je suis actuellement allé pour teatimer
. Mais lorsque je regarde d'autres projets Maven, ils utilisent des traits d'union pour séparer des mots dans artifactId
s, comme ceci: tea-timer
. Mais cela a l'air bizarre quand on le concatène avec la groupId
: com.mycompany.teatimer.tea-timer
.
Comment ferais-tu ceci?
Un autre exemple:
Nom du package: com.mycompany.awesomeinhouseframework
groupId
: com.mycompany.awesomeinhouseframework
(?)
artifactId
: awesome-inhouse-framework
(?)
Votre convention semble être raisonnable. Si je cherchais votre cadre dans le dépôt Maven, je chercherais awesome-inhouse-framework-x.y.jar
dans le répertoire du groupe com.mycompany.awesomeinhouseframework
. Et je le trouverais là selon votre convention.
Deux règles simples fonctionnent pour moi:
L'étrange est très subjectif, je suggère simplement de suivre la recommandation officielle:
Guide sur les conventions de dénomination sur groupId, artifactId et version
groupId
identifiera votre projet de manière unique pour tous les projets, nous devons donc appliquer un schéma de nommage . Il doit suivre le nom du paquet règles, quels moyens cela doit être à moins comme un nom de domaine que vous contrôlez, et vous pouvez créer autant de sous-groupes comme tu veux. Regardez plus d'informations sur les noms de paquets .par exemple.
org.Apache.maven
,org.Apache.commons
Un bon moyen de déterminer la granularité de groupId consiste à utiliser la structure du projet. C'est-à-dire si le Le projet en cours est un module multiple projet, il convient d’ajouter un nouveau identifiant du groupId du parent.
par exemple.
org.Apache.maven
,org.Apache.maven.plugins
,org.Apache.maven.reporting
artifactId
est le nom du fichier jar sans version. Si vous l'avez créé alors vous pouvez choisir le nom que vous voulez veux avec des lettres minuscules et non symboles étranges. Si c'est un tiers jar vous devez prendre le nom du pot comme il est distribué.par exemple.
maven
,commons-math
version
si vous le distribuez, vous pouvez choisir n'importe quel fichier .__ typique. version avec chiffres et points (1.0, 1.1, 1.0.1, ...). N'utilisez pas les dates car elles sont généralement associées à SNAPSHOT (nocturne) construit. Si c'est un artefact tiers, vous devez utiliser leur numéro de version quel qu’il soit, et aussi étrange que cela puisse paraître.par exemple.
2.0
,2.0.1
,1.3.1
Considérez comme pour la construction de base Maven application
groupId
artifactId
version
Cependant, je suis en désaccord avec la définition officielle de Guide des conventions de nommage sur groupId, artifactId et 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 et org
signifie que ce projet appartient à une organisation sociale. Celles-ci sont correctes, mais pour les domaines étranges tels que xxx.tv, xxx.uk, xxx.cn, il n’a aucun sens de nommer le groupId commencé par "tv." du projet plutôt que du domaine.