Actualmente estoy en el proceso de trasladar algún proyecto de Ant a Maven. Conforme soy, quiero usar convenciones bien establecidas para encontrar groupId
y artifactId
, pero no puedo encontrar ninguna convención detallada (hay algunas, pero no cubren los puntos sobre los que me pregunto).
Tome este proyecto por ejemplo, primero el paquete Java: com.mycompany.teatimer
El temporizador de té es en realidad dos palabras, pero las convenciones de nomenclatura del paquete Java prohíben la inserción de guiones bajos o guiones, así que lo escribo todo junto.
Elegí el groupId
ID idéntico al paquete porque creo que es una buena idea. ¿Lo es?
Finalmente, tengo que elegir un artifactId
, actualmente fui por teatimer
. Pero cuando miro a otros proyectos Maven, que utilizan guiones para separar palabras en artifactId
s, de esta manera: tea-timer
. Pero parece raro cuando concatenado a la 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
(?)
fuente
Respuestas:
Su convención parece ser razonable. Si estuviera buscando su marco en el repositorio de Maven, lo buscaría
awesome-inhouse-framework-x.y.jar
en elcom.mycompany.awesomeinhouseframework
directorio del grupo. Y lo encontraría allí según su convención.Dos reglas simples funcionan para mí:
fuente
La rareza es altamente subjetiva, solo sugiero seguir la recomendación oficial:
fuente
package
? ¿Cuál es la diferencia con groupId?Considere lo siguiente para construir la primera aplicación básica de Maven :
groupId
artifactId
version
fuente
com.my.company.project
comogroupId
ocom.client.company.project
?Sin embargo, no estoy de acuerdo con la definición oficial de Guía para las convenciones de nomenclatura en groupId, artifactId y la versión que propone que groupId debe comenzar con un nombre de dominio invertido que usted controle.
com
significa que este proyecto pertenece a una empresa, yorg
significa que este proyecto pertenece a una organización social. Estos están bien, pero para aquellos dominios extraños como xxx.tv, xxx.uk, xxx.cn, no tiene sentido nombrar el groupId que comenzó con "tv", "cn.", El groupId debería entregar la información básica del proyecto en lugar del dominio.fuente
myuser
su repositoriomyrepo
, simplemente use el nombre del paquetecom.github.myuser.myrepo
. Eso es gratis y sigue siendo único.Considere esto para obtener un archivo jar completamente único:
fuente