Artefacto de Maven y nomenclatura de ID de grupo

Resuelto Noarth asked hace 14 años • 4 respuestas

Actualmente estoy en el proceso de trasladar algún proyecto de Ant a Maven. Conformista como soy, quiero usar convenciones bien establecidas para encontrar groupIdy artifactId, pero no puedo encontrar ninguna convención detallada (hay algunas, pero no cubren los puntos sobre los que tengo dudas).

Tomemos este proyecto, por ejemplo, primero el paquete Java:com.mycompany.teatimer

Tea timer consta en realidad de dos palabras, pero las convenciones de nomenclatura de paquetes de Java prohíben la inserción de guiones bajos o guiones, por lo que lo escribiré todo junto.

Elegí el groupIdID del paquete idéntico porque creo que es una buena idea. ¿Lo es?

Finalmente, tengo que elegir uno artifactId, elegí actualmente teatimer. Pero cuando miro otros proyectos de Maven, usan guiones para dividir palabras en artifactIds, así: tea-timer. Pero parece extraño cuando se concatena con groupId: com.mycompany.teatimer.tea-timer.

¿Cómo harías esto?

Otro ejemplo:

Nombre del paquete:com.mycompany.awesomeinhouseframework

groupId: com.mycompany.awesomeinhouseframework(?)

artifactId: awesome-inhouse-framework(?)

Noarth avatar Sep 16 '10 14:09 Noarth
Aceptado

La rareza es muy subjetiva, sólo sugiero seguir la recomendación oficial:

Guía para convenciones de nomenclatura en groupId, artefactoId y versión

  • groupIdidentificará su proyecto de forma única en todos los proyectos, por lo que debemos aplicar un esquema de nomenclatura. Tiene que seguir las reglas de nombres de paquetes, lo que significa que debe ser al menos un nombre de dominio que usted controle y puede crear tantos subgrupos como desee. Mire Más información sobre los nombres de los paquetes .

    p.ej. org.apache.maven,org.apache.commons

    Una buena forma de determinar la granularidad del groupId es utilizar la estructura del proyecto. Es decir, si el proyecto actual es un proyecto de varios módulos, debe agregar un nuevo identificador al ID de grupo principal.

    p.ej. org.apache.maven, org.apache.maven.plugins, org.apache.maven.reporting

  • artifactIdes el nombre del jar sin versión. Si lo creaste, puedes elegir el nombre que quieras con letras minúsculas y sin símbolos extraños. Si se trata de un frasco de terceros, debe tomar el nombre del frasco tal como se distribuye.

    p.ej. maven,commons-math

  • versionsi lo distribuyes, puedes elegir cualquier versión típica con números y puntos (1.0, 1.1, 1.0.1, ...). No utilice fechas, ya que normalmente están asociadas con compilaciones SNAPSHOT (todas las noches). Si se trata de un artefacto de terceros, debes usar su número de versión, sea cual sea y por más extraño que parezca.

    p.ej. 2.0, 2.0.1,1.3.1

Pascal Thivent avatar Sep 16 '2010 08:09 Pascal Thivent

Su convención parece razonable. Si estuviera buscando su marco en el repositorio de Maven, lo buscaría awesome-inhouse-framework-x.y.jaren el com.mycompany.awesomeinhouseframeworkdirectorio del grupo. Y lo encontraría allí según su convención.

Dos reglas simples funcionan para mí:

  • paquetes de dominio inverso para groupId (ya que son bastante únicos) con todas las restricciones relacionadas con los nombres de los paquetes Java
  • nombre del proyecto como artefactoId (teniendo en cuenta que debe ser compatible con el nombre jar, es decir, no contener caracteres que tal vez no sean válidos para un nombre de archivo o que simplemente parezcan extraños)
Henryk Konsek avatar Sep 16 '2010 10:09 Henryk Konsek