Именять артефакт Maven и groupId

В настоящее время я перемещаю некоторый проект из Ant в Maven. Конформист, как и я, я хочу использовать хорошо установленные соглашения для поиска groupId и artifactId, но я не могу найти никаких подробных соглашений (есть некоторые, но они не охватывают моменты, о которых мне интересно).

Возьмите этот проект, например, сначала пакет Java: com.mycompany.teatimer

Таймер чая на самом деле два слова, но соглашения об именах Java-пакетов запрещают вставлять символы подчеркивания или дефисы, поэтому я пишу все это вместе.

Я выбрал groupId идентичный идентификатору пакета, потому что я думаю, что это хорошая идея. Это?

Наконец, я должен выбрать artifactId, в настоящее время я ходил за teatimer. Но когда я смотрю на другие проекты Maven, они используют дефисы для разделения слов в artifactId s, например: tea-timer. Но это выглядит странно, когда конкатенируется с groupId: com.mycompany.teatimer.tea-timer.

Как вы это сделаете?

Другой пример:

Имя пакета: com.mycompany.awesomeinhouseframework

groupId: com.mycompany.awesomeinhouseframework (?)

artifactId: awesome-inhouse-framework (?)

Ответ 1

Ваше соглашение кажется разумным. Если бы я искал вашу структуру в репозитории Maven, я бы поискал awesome-inhouse-framework-x.y.jar в каталоге com.mycompany.awesomeinhouseframework group. И я найду его там в соответствии с вашей конвенцией.

Для меня действуют два простых правила:

  • пакеты с обратным доменом для groupId (так как они совершенно уникальны) со всеми ограничениями в отношении имен пакетов Java
  • имя проекта как artifactId (имея в виду, что он должен быть дружественным к jar-name, т.е. не содержать символов, которые могут быть недопустимыми для имени файла или просто выглядеть странно)

Ответ 2

Weirdness очень субъективна, я просто предлагаю следовать официальной рекомендации:

Руководство по соглашениям об именах для groupId, artifactId и версии

  • groupId однозначно идентифицирует ваш проект во всех проектах, поэтому нам необходимо обеспечить соблюдение схемы именования. Он должен следовать имени пакета правила, что означает, что должно быть как имя домена, которое вы контролируете, и вы можете создать столько подгрупп как пожелаете. Посмотрите дополнительную информацию о именах пакетов.

    например. org.apache.maven, org.apache.commons

    Хорошим способом определения гранулярности groupId является использование структура проекта. То есть, если текущий проект - это несколько модулей проекта, он должен добавить новый идентификатор родительской группы.

    например. org.apache.maven, org.apache.maven.plugins, org.apache.maven.reporting

  • artifactId - это имя банки без версии. Если вы создали его то вы можете выбрать любое имя, которое вы хотите с строчными буквами, и нет странные символы. Если это третья сторона jar вы должны взять имя jar по мере его распространения.

    например. maven, commons-math

  • version, если вы его распространяете, вы можете выбрать любой типичный версия с числами и точками (1.0, 1.1, 1.0.1,...). Не используйте даты, поскольку они обычно связаны с SNAPSHOT (ночной) строит. Если это стороннего артефакта, вы должны использовать их номер версии, какой бы он ни был, и так странно, как может выглядеть.

    например. 2.0, 2.0.1, 1.3.1

Ответ 3

Подумайте о том, как создать базовое первое приложение Maven:

groupId

  • com.companyname.project

artifactId

  • Проект

version

  • 0.0.1

Ответ 4

Рассмотрим это, чтобы получить полностью уникальный файл jar:

  • GroupID - com.companyname.project
  • ArtifactId - com-companyname-project
  • Пакет - com.companyname.project