Aktualizacja zależności oraz zmiana wersji projektu

Posted on Posted in Maven

Aktualizacja zależności oraz zmiana wersji projektu potrafi być może nie koniecznie skomplikowanym ale na pewno żmudnym zajęciem w trakcie którego łatwo o czymś zapomnieć. Tworząc nieco większy projekt z wykorzystaniem narzędzia jakim jest Maven stajemy przed wieloma wyborami odnośnie struktury projektu, możemy wszystkie moduły zrobić niezależnie, albo wszystkie lub część ze wspólnym „parentem”. Każde rozwiązanie ma swoje plusy i minusy, jednak zawsze w którymś momencie pojawia się potrzeba „podbicia” wersji modułu lub całego projektu, a później pojawia się pytanie, gdzie ta wersja jest użyta i jak zaktualizować wszystkie moduły.

Okazuje się że bardzo ułatwić zadanie może sam maven, wystarczy odrobina konfiguracji oraz kilka poleceń.

Nasza struktura

Załóżmy że mamy projekt którego struktura wygląda mniej więcej tak:

Mamy projekt w którym mamy główny moduł o nazwie master. Posiada on dwa moduły „mod1” oraz „mod2” które nie mają podanej własnej wersji, czyli dziedziczą ją po module master. Dodatkowo mamy moduł „common” który w sumie jest niezależnym projektem, do jego użycia wymagane jest wgranie go na artifactory lub zrobienie „mvn install” na projekcie.

Dla trochę większego skomplikowania wersja modułu common jest podana w property „common.version” znajdującym się w głównym pomie.

Aktualizacja zależności oraz zmiana wersji projektu maven

Do zmiany wersji wykorzystamy plugin versions-maven-plugin. Wykorzystamy tylko odrobinę możliwości tego pluginu ponieważ pozwala on między innymi na zarządzanie wersjami wszystkich zależności w projekcie, sprawdzanie oraz wykonywanie aktualizacji.

Pełną dokumentację pluginu można znaleźć pod adresem: http://www.mojohaus.org/versions-maven-plugin/

Zmiana wersji projektu

Aktualizacja wersji głównego pom.xml wygląda tak:

Wydanie tego polecenia w katalogu głównym projektu spowoduje zmianę wersji projektu na 1.0.2-SNAPSHOT, oraz zaktualizowanie wszystkich modułów zależnych od tego „parent” do tej wersji. Jedno polecenie które rozwiązuje problem sprawdzania wszystkich plików pom.xml

Aktualizacja modułu

Aktualizując wersję modułu na początku postępujemy analogicznie jak przy zmianie wersji projektu, czyli podbijamy wersję tego modułu i instalujemy go lub wykonujemy deploy na repozytorium.

Dalej najlepiej dopisać sekcję plugins do głównego pom.xml w projekcie:

W ten sposób definiujemy nazwę property oraz zależność z nim powiązaną, zezwalamy na aktualizację do wersji SNAPSHOT, oraz blokujemy automatyczne wiązania innych property.

Pozostaje wydać w katalogu głównym projektu polecenie:

Które spowoduje aktualizację wersji określonych w sekcji properties według podanej konfiguracji, polecenie sprawdzi i poprawi również moduły zdefiniowane w naszym projekcie („mod1” oraz „mod2”).

Podsumowanie

Czasami brak odpowiedniego narzędzia bardzo zniechęca do aktualizacja zależności oraz zmiany wersji projektu, przez co np. wersja „0.0.1-SNAPSHOT” funkcjonuje przez większość lub cały cykl życia projektu, bo każdy „boi” się ją ruszyć. Wystarczy jednak odrobina konfiguracji i kilka poleceń żeby wszystko zrobiło się łatwe i proste.

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *