Репозитории и координаты
Репозитории Maven 2 содержат набор артефактов, используемых Maven для принятия решений о связях в проекте. Локальные репозитории доступны на локальных дисках, а удаленные - по сети.
Артефакт упакован как файл JAR, содержащий двоичную библиотеку или исполняемый код. Это называется типом артефакта. На самом деле артефакт так же может быть WAR, EAR или другим типом пакета кода.
Maven 2 использует такую же структуру каталогов, как и операционная система, позволяя быстрое индексирование набора артефактов, хранящихся в репозитории. Система индексации репозитория зависит от возможности присвоить уникальное имя любому артефакту посредством его координаты.
Координаты Maven
Координаты Maven - это набор взаимосвязанных значений, уникально определяющих любой артефакт. Координата включает в себя три компонента:
- ID группы group ID: Объект или организация, ответственная за производство артефакта. Например,
com.ibm.devworks может быть ID группы.
- ID артефакта artifact ID: Имя данного артефакта. Например, проект с основным классом
OpsImp может использовать OpsImp как ID артефакта.
- Версия version: Номер версии артефакта. Поддерживается форма записи формата
mmm.nnn.bbb-qqqqqqq-dd
, где
mmm
- это основной номер версии,
nnn
- это дополнительный номер версии, и
bbb
- это уровень коррекции ошибок. Необязательными являются поля
qqqqq
(спецификатор) и
dd
(номер сборки).
Координаты Maven используются во всех файлах конфигурации Maven и POM. Например, чтобы определить связь проекта с модулем OpsImp на уровне 1.0-SNAPSHOT, файл pom.xml содержит сегмент, показанный в Листинге 1:
Листинг 1. Пример координат Maven для OpsImp модуля
<dependencies>
<dependency>
<groupId>com.ibm.devworks</groupId>
<artifactId>OpsImp</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
|
Спецификатор SNAPSHOT сообщает Maven 2, что проект или модуль находится в разработке, и что он должен выбрать последнюю копию артефакта.
Чтобы указать, что проект связан с JUnit для тестирования модулей, надо добавить координаты JUnit 3.8.1 в качестве связи в pom.xml проекта так, как показано в Листинге 2:
Листинг 2. Координаты Maven для связи JUnit
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
|
Изучение репозитория Maven
Поскольку репозитории в Maven представляют собой обычные деревья каталогов, вы легко можете увидеть, каким образом артефакты хранятся на диске. Рисунок 3 - часть локального репозитория, показывающего местонахождение артефакта JUnit 3.8.1:
Рисунок 3. Внутри репозитория Maven 2
На рисунке 3 вы можете видеть, что Maven содержит файлы POM артефактов вместе с хэшами контрольной суммы как для артефакта, так и для его POM в репозитории. Эти файлы гарантируют целостность артефакта, при его передаче между репозиториями. Этот артефакт был загружен с центрального репозитория и помещен в локальный движок управления связями Maven.
На рисунке 4 показан артефакт с координатами com.ibm.devworks/OpsImp/1.0-SNAPSHOT в локальном репозитории. Артефакт находится в каталоге вместе с файлом POM. В этом случае, артефакт установлен локально.
Рисунок 4. Артефакт OpsImp в локальном репозитории
|