7 lutego 2008

Publikowanie do prywatnego repozytorium Maven 2

W artykule "Artifactory, czyli prywatne repozytorium Maven 2" opisałem proces instalacji i konfiguracji prywatnego repozytorium Maven 2 – Artifactory – i pokazałem jak skonfigurować klienta Maven by pobierał z niego zależności. Pozostał jeszcze do wykonania jeden krok – publikacja modułów naszego projektu do tegoż repozytorium tak, aby mogły być pobrane jako zależności innych modułów, w końcu to o to właśnie nam chodzi. Jedną z możliwości jest powierzenie zadania budowania i publikacji modułów serwerowi budowania, np. Continuum czy LuntBuild. Wtedy architektura naszego rozwiązania wygląda jakoś tak:


Ale dziś napiszę o innym rozwiązaniu, nieco uproszczonej wersji, która może być właściwsza dla nie dużych i krótkotrwałych projektów. W wersji tej nie używamy dedykowanego serwera budowania – mowa oczywiście o serwerze w sensie oprogramowania a nie maszyny – a jego role przejmują programiści i ich IDE. Wygląda to wtedy tak:


A zatem jak skonfigurować nasz projekt Maven, aby móc publikować do zdalnego, prywatnego repozytorium? Trochę zależy to od naszego repozytorium, a konkretnie od obsługiwanego przez to repozytorium protokołu komunikacyjnego. Ten artykuł dotyczy jednak Artifactory i zakłada że jego konfiguracja jest zgodna z tą opisaną w artykule cytowanym na początku. Jedyne, co trzeba zrobić to dodać do naszego pliku pom.xml następujący fragment:

<distributionManagement>
<repository>
<id>central</id>
<url>http://<host>:<port>/artifactory/libs-releases</url>
<uniqueVersion>false</uniqueVersion>
</repository>
<snapshotRepository>
<id>central</id>
<url>http://<host>:<port>/artifactory/libs-snapshots</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>

Element repository określa repozytorium przechowujące wersje dystrybucyjne (ang. releases) a element snapshotRepository repozytorium przechowujące wersje tymczasowe (ang. snapshots). W moim przypadku są to odpowiednio repozytoria o nazwach libs-releases i libs-snapshots. Poniżej przytaczam ich definicje. Jest to fragment domyślnej konfiguracji, pliku konfiguracyjnego Artifactory:

<localRepository>
<key>libs-releases</key>
<description>Local repository for in-house libraries</description>
<handleReleases>true</handleReleases>
<handleSnapshots>false</handleSnapshots>
</localRepository>
<localRepository>
<key>libs-snapshots</key>
<description>Local repository for in-house snapshots</description>
<handleReleases>false</handleReleases>
<handleSnapshots>true</handleSnapshots>
</localRepository>

Podkreślę jeszcze, że jako repozytorium nie możemy tu użyć http://<host>:<port>/artifactory/repo tak jak to zrobiłem (w innym celu) w poprzednim, cytowanym na początku artykule. Jest to bowiem repozytorium wirtualne, będące swego rodzaju widokiem na sumę repozytoriów rzeczywistych i służy z tej racji tylko do odczytu. Aby opublikować tak skonfigurowany projekt wystarczy wydać polecenie 'mvn deploy'.

Brak komentarzy: