В настоящее время я нахожусь в процессе переноса какого-то проекта из Ant в Maven. Конформист, как и я, я хочу использовать общепринятые соглашения для поиска groupId
и artifactId
, но я не могу найти какие-либо подробные соглашения (есть некоторые, но они не охватывают вопросы, которые меня интересуют).
Возьмите этот проект, например, сначала пакет Java: com.mycompany.teatimer
Таймер чая на самом деле состоит из двух слов, но соглашения об именах пакетов Java запрещают вставку символов подчеркивания или дефиса, поэтому я пишу все это вместе.
Я выбрал groupId
идентичный идентификатору пакета, потому что думаю, что это хорошая идея. Это?
Наконец, я должен выбрать artifactId
, я в настоящее время пошел на teatimer
. Но когда я смотрю на других проектах Maven, они используют дефис для разделения слов в artifactId
сек, как это: tea-timer
. Но это выглядит странно , когда присоединялись к groupId
: com.mycompany.teatimer.tea-timer
.
Как бы вы это сделали?
Другой пример:
Имя пакета: com.mycompany.awesomeinhouseframework
groupId
: com.mycompany.awesomeinhouseframework
(?)
artifactId
: awesome-inhouse-framework
(?)
источник
Ответы:
Ваше соглашение кажется разумным. Если бы я искал ваш фреймворк в репозитории Maven, я бы искал
awesome-inhouse-framework-x.y.jar
вcom.mycompany.awesomeinhouseframework
каталоге группы. И я нашел бы это там согласно вашему соглашению.У меня работают два простых правила:
источник
Странность очень субъективна, я просто предлагаю следовать официальной рекомендации:
источник
package
? Какая разница для groupId?Рассмотрим следующее для создания базового первого приложения Maven :
groupId
artifactId
version
источник
com.my.company.project
какgroupId
илиcom.client.company.project
?Однако я не согласен с официальным определением Руководства по соглашениям об именах для groupId, artifactId и версии, в котором предлагается, чтобы groupId должен начинаться с обратного доменного имени, которым вы управляете.
com
означает, что этот проект принадлежит компании, иorg
означает, что этот проект принадлежит социальной организации. Это нормально, но для таких странных доменов, как xxx.tv, xxx.uk, xxx.cn, не имеет смысла называть groupId, начинающийся с "tv.", "Cn.", GroupId должен предоставлять основную информацию проекта, а не домена.источник
myuser
и ваш репозиторий называетсяmyrepo
, тогда просто используйте имя пакетаcom.github.myuser.myrepo
. Это бесплатно и все еще уникально.Учтите это, чтобы получить полностью уникальный файл JAR:
источник