web-dev-qa-db-fra.com

Nom de l'artefact Maven et du groupId

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 artifactIds, 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 (?)

218
Noarth

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:

  • reverse-domain-packages pour groupId (car ils sont assez uniques) avec tous les contraintes concernant les noms de paquets Java
  • nom du projet en tant que artifactId (en gardant à l’esprit que ce nom doit être convivial, c’est-à-dire qu’il ne doit pas contenir de caractères qui pourraient ne pas être valides pour un nom de fichier ou tout simplement bizarre)
106
Henryk Konsek

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

209
Pascal Thivent

Considérez comme pour la construction de base Maven application

groupId 

  • com.companyname.project

artifactId

  • projet

version

  • 0.0.1
71
Manwal

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. 

0
Tommy.Tang