Материал предоставлен https://it.rfei.ru

Координаты проекта

Каждый модуль Apache Maven — будь то приложение, библиотека, плагин системы сборки и т.д. — имеет свои глобально уникальные координаты, которые позволяют идентифицировать модуль во Вселенной артефактов Maven.

Координаты состоят из трех полей.

  • Идентификатор группы groupId определяет принадлежность модуля к какой-либо сущности, например, компании, организации или домену. Как правило, в качестве groupId указывают обратное имя домена собственника программного продукта (например, для домена circumflex.savant.pro идентификатор группы будет pro.savant.circumflex).
  • Идентификатор артефакта artifactId уникально идентифицирует модуль внутри группы. Как правило, выбирают сокращенное название компонента (приложения или библиотеки), а слова разделяют дефисами -. Иногда в artifactId позволяют небольшую избыточность для избежания неоднозначностей (например, модуль «Circumflex Web Framework» имеет идентификатор артефакта circumflex-web, а не web, несмотря на то, что слово «circumflex» уже встречается в groupId).
  • Версия version — это временная координата проекта, отражающая его состояние на определеном этапе развития.

    Поле version может иметь произвольное значение, однако на практике разработчики стараются придерживаться схемы нумерации версий, которая является общей практически для всех артефактов Maven:

    <major number>.<minor number>[.<incremental number>[-<qualifier>]]
    • главное число (major number) отражает поколение программного продукта, оно повышается только тогда, когда происходят значительные изменения (проект, как правило, полностью переписывается);
    • второстепенное число (minor number) отражает добавление или удаление каких-либо возможностей, а также незначительные изменения в спецификациях;
    • инкрементальное число (incremental number) отражает исправление мелких ошибок и недочетов без существенных изменений;
    • классификатор (qualifier) — произвольные символы, которые помогают сориентироваться в версиях; ниже приведены наиболее распространенные классификаторы:

      • SNAPSHOT — в активной разработке (этот специальный классификатор используется менеджерами репозиториев Maven);
      • alpha, beta — указание на стадию разработки проекта (также добавляют номера);
      • RC (release candidate) — кандидат на публичный выпуск (также добавляют номера);
      • GA (global availability) отмечает стабильный публичный релиз, протестированный третьими лицами в промышленной эксплуатации.

    Версии делятся на две категории:

    • снапшоты предназначены для активно развивающихся (и, соответственно, постоянно изменяющихся) проектов; поле version таких артефактов оканчивается специальным классификатором -SNAPSHOT;
    • релизы фиксируют определенное состояние проекта в конкретный момент времени (релиз) и более не изменяются.

    Удачные примеры

    1.0, 1.0.1, 1.0-SNAPSHOT, 1.0-RC1, 1.0-M1, 1.0-alpha3, 1.0-b76

    Неудачные примеры

    1, 2013-02-26, x.y.z, 1.0/14, 1.0.1.6

Создание проектаГенерация проекта