Артефакт Maven и именование groupId
в настоящее время я в процессе перемещения некоторых проектов из Ant в Maven. Конформист, как я, я хочу использовать устоявшиеся соглашения для поиска groupId и artifactId, но я не могу найти никаких подробных соглашений (есть некоторые, но они не охватывают те моменты, о которых мне интересно).
возьмите этот проект, например, сначала пакет Java:com.mycompany.teatimer
чай таймер на самом деле два слова, но Соглашения об именовании пакетов Java запрещают вставка подчеркиваний или дефисов, поэтому я пишу все это вместе.
я выбрал groupId идентичен идентификатору пакета, потому что я думаю, что это хорошая идея. Так ли это?
наконец, я должен забрать artifactId, Я в настоящее время пошел на teatimer. Но когда я смотрю на другие проекты Maven, они используют дефисы для разделения слов в artifactIds, Вот так:tea-timer. Но это выглядит странно, когда сцеплены с groupId:com.mycompany.teatimer.tea-timer.
как бы вы сделали это?
еще пример:
название пакета: com.mycompany.awesomeinhouseframework
groupId:com.mycompany.awesomeinhouseframework (?)
artifactId:awesome-inhouse-framework (?)
4 ответов:
ваша конвенция кажется разумной. Если бы я искал вашу структуру в репо Maven, я бы искал
awesome-inhouse-framework-x.y.jarнаcom.mycompany.awesomeinhouseframeworkкаталог группы. И я нашел бы его там в соответствии с вашим соглашением.для меня работают два простых правила:
- reverse-domain-пакеты для groupId (так как такие довольно уникальны) со всеми ограничения что касается имен пакетов Java
- название проекта как artifactId (имея в виду, что это должно быть jar-name дружественным, т. е. не содержать символов, которые могут быть недействительными для имени файла или просто выглядеть странно)
странность очень субъективна, я просто предлагаю следовать официальной рекомендации:
руководство по соглашениям об именах для groupId, artifactId и version
groupIdопределит ваш проект уникально через все проекты, поэтому нужно применить схему именования. Он должен следовать за именем пакета правила, что значит что должно быть у по крайней мере, как доменное имя, которое вы контролируете, А вы можете создать столько подгрупп как вы хотите. смотрите дополнительную информацию об именах пакетов.например.
org.apache.maven,org.apache.commonsхороший способ определить степень детализации groupId-использовать структура проекта. То есть, если текущий проект представляет собой несколько модулей проект, он должен добавить новый идентификатор для группы родителей.
например.
org.apache.maven,org.apache.maven.plugins,org.apache.maven.reporting
artifactIdэто имя банки без версии. Если вы его создали тогда вы можете выбрать любое имя вы хотите со строчными буквами и нет странный символ. Если это третья сторона банку вы должны взять имя баночка, как она распределяется.например.
maven,commons-math
versionесли вы распространяете его, то вы можете выбрать любой типичный версия с цифрами и точками (1.0, 1.1, 1.0.1, ...). Не используйте даты, как они обычно связаны с Моментальный снимок (ночные) сборки. Если это артефакт третьей стороны, вы должны использовать их номер версии, что бы это ни было, и как бы странно это ни выглядело.например.
2.0,2.0.1,1.3.1
рассмотрим следующее, как для построения основного первого Maven применение:
groupId
- com.название компании.проект
artifactId
- проект
version
- 0.0.1
рассмотрим это, чтобы получить полностью уникальный файл jar:
- GroupID-com.название компании.проект
- ArtifactId-com-companyname-project
- пакет-com.название компании.проект
Comments