web-dev-qa-db-fra.com

Meilleures pratiques en matière de dénomination des conventions sur Maven artifactID (y a-t-il des restrictions?)

Mon équipe est nouvelle à Maven et nous n'avons pas pu trouver de conseils définitifs sur la sélection des ID d'artefact pour nos projets.

Je sais que le Guide des conventions de dénomination dit que les artifactID doivent être

"quel que soit le nom que vous voulez avec des lettres minuscules et pas de symboles étranges"

mais certaines personnes de mon groupe veulent utiliser le style de nom de domaine inversé pour les ID de groupe et ID d'artefact.

Sur la base des directives susmentionnées et de tous les exemples que j'ai vus dans le référentiel central, je ne pense pas qu'il soit logique d'avoir des ID d'artefact de style de domaine inverse, mais je ne peux pas dire si cela est en fait invalide ou simplement désapprouvé . Je me souviens vaguement avoir lu quelque chose sur les divers gestionnaires de référentiels qui ne pouvaient pas traiter efficacement les ID d'artefact qui contiennent des caractères point (.) Mais je ne me souviens pas où j'ai lu cela et je ne le trouve pas maintenant.

Quelles sont les règles, le cas échéant, sur les caractères autorisés dans un artefactID Maven?

19
carej

Comme un début ici quelques articles traitant de ce sujet:

Pointeurs

Et sur Stack Overflow!

Ensuite, je vous suggère de ne PAS utiliser groupId dans votre artifactId. C'est redondant;).

Je cite les documents sonatype qui semblent être les plus pertinents pour votre question:

Conventions de dénomination Sonatype

groupId identifiera votre projet de manière unique sur tous les projets, nous devons donc appliquer un schéma de dénomination. Il doit suivre les règles de nom de package, ce qui signifie qu'il doit s'agir au moins d'un nom de domaine que vous contrôlez, et vous pouvez créer autant de sous-groupes que vous le souhaitez. par exemple. org.Apache.maven, org.Apache.commons Un bon moyen de déterminer la granularité du groupId est d'utiliser la structure du projet. Autrement dit, si le projet en cours est un projet à plusieurs modules, il doit ajouter un nouvel identificateur au groupId du parent. par exemple. org.Apache.maven, org.Apache.maven.plugins, org.Apache.maven.reporting

artifactId est le nom du pot sans version. Si vous l'avez créé, vous pouvez choisir le nom que vous voulez avec des lettres minuscules et aucun symbole étrange. S'il s'agit d'un pot tiers, vous devez prendre le nom du pot tel qu'il est distribué. maven, commons-math

version si vous le distribuez, vous pouvez choisir n'importe quelle version typique avec des nombres et des points (1.0, 1.1, 1.0. 1, ...). N'utilisez pas de dates car elles sont généralement associées à des versions instantanées (nocturnes). S'il s'agit d'un artefact tiers, vous devez utiliser leur numéro de version quel qu'il soit, et aussi étrange que cela puisse paraître. 2.0, 2.0.1, 1.3.1

Donc, en utilisant DNS inverse dans votre groupId [~ # ~] et [~ # ~] le nom de votre paquet est une bonne pratique. Les réutiliser dans artifactId ne l'est pas.

20
Jean-Rémy Revy

Je dirais que le groupId est comme le nom du package dans Java où le artifactId est similaire au nom de la classe (ok pas vraiment) mais je pense qu'il y a une relation avec le nom de la classe. Dans Maven vous donnez généralement un nom à un module/projet qui est en particulier l'artefactId.

De plus, j'ai trouvé quelques indices sur l'artefactId ici .

4
khmarbaise