Tworzenie hermetycznych budów maven

Próbuję stworzyć sposób, w jaki hermetyczne kompilacje można osiągnąć, nadal opierając się na zależnościach SNAPSHOT w projekcie.

Na przykład powiedzmy, że mam projekt, który ma taką strukturę zależności:

             ┌ other-1.2-SNAPSHOT
mine-1.2.3 ──┤
             └ thing-3.1-SNAPSHOT ── gizmo-6.1.3-SNAPSHOT

Chciałbym rozwiązać wszystkie zależności SNAPSHOT lokalnie do czegoś, co jest związane z moją aktualną wersją, a następnie wdrożyć je jako wydania do mojego repozytorium wersji Nexusa. Nie wszystkie te zależności są wewnętrzne, więc nie mogę po prostu wydać każdego z nich.

W tym przykładzieother-1.2-SNAPSHOT stałoby się coś takiegoother-1.2-mine-1.2.3 ithing-3.1-SNAPSHOT stanie sięthing-3.1-mine-1.2.3. Jest to stosunkowo proste w około 60 liniach Pythona.

Problem polega jednak na rozwiązywaniu przechodnich SNAPSHOT w konkretnych wersjach. Muszę też się przekonaćgizmo-6.1.3-SNAPSHOT dogizmo-6.1.3-mine.1.2.3 i mająthing-3.1-mine-1.2.3 zależy od tego.

To tylko przykład jednego ze sposobów osiągnięcia tego, czego chcę. Celem jest to, że za rok lub dwa w dół będę mógł sprawdzić moją wersję wydania 1.2.3 i móc uruchomićmvn clean package lub tym podobne, bez martwienia się o rozwiązywanie długotrwałych zależności SNAPSHOT.

Ważne jest, aby ta gałąź była kompilowalna i nie tylko zachowywała wszystkie zależności, używając czegoś takiego jakjar-and-dependencies funkcjonalność wtyczki zespołu. Chciałbym potencjalnie móc zmodyfikować pliki źródłowe i utworzyć inną wersję wydania (np. Zastosowanie poprawki).

Więc,

Czy jest coś takiego jak to, które będzie w stanie konwertować zależności SNAPSHOT w sposób rekurencyjny na konkretny?Czy są jakieś wtyczki, które zarządzają takimi rzeczami? Wtyczka do wydania obiecała kilka opcji konfiguracyjnychbranch cel, ale nie rozwiązuje zewnętrznych depotów w takim stopniu, w jakim chcę.Czy są dostępne inne techniki tworzenia hermetycznych kompilacji Maven?

questionAnswers(2)

yourAnswerToTheQuestion