Szukałem już od jakiegoś czasu i nie mogłem znaleźć żadnego działającego rozwiązania lub przewodnika/samouczka dotyczącego zwalniania modułów Maven przy użyciu zagnieżdżonych podmodułów Git.Uwalnianie wielu artefaktów Mavena przy użyciu zagnieżdżonych podmodeli Git
Mamy złożoną strukturę publicznych i prywatnych projektów, które wymagają konkretnego zamówienia do pomyślnego zbudowania. Naszym celem jest wykonanie wydania Maven w celu zaszyfrowania i wdrożenia wielu artefaktów Maven w jednym kroku.
Oto uproszczone Maven project/moduły i struktura repozytorium Git:
parent-public:1.0.0:pom (descriptor only, no Maven modules, public Git repository)
| |
| |- public-module:1.0.0-SNAPSHOT:jar
| (Maven module, child of parent-public, Git submodule, public repository)
|
|- parent-private:1.0.0-SNAPSHOT:pom
(Maven modules, Git submodule, private repository)
|
|- public-module:1.0.0-SNAPSHOT:jar
| (Maven module only, child of parent-public, Git submodule, public repository, released)
|
|- private-module:1.0.0-SNAPSHOT:war
(Maven module, child of parent-private, released)
Obecna struktura pozwala Maven do tworzenia i wdrażania projektów/modułów niezależnie.
Po zwolnieniu public-module
(od nadrzędny publicznym/rodziców-prywatnego/publicznego modułu Directory), The maven-release-plugin
Skuteczny (GIT repozytorium zostały oznaczone i uwolnienia artefakt jest stosowane).
Po zwolnieniu parent-private
The maven-release-plugin
przygotowuje i rozpoczyna wykonywanie uwolnienie przed braku podczas docelowej kasie (ten problem został omówiony here, ale rozwiązanie nie działa w moim kontekście, a za mało reputacji komentować).
Oto aktualny maven-release-plugin
konfiguracja:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<tagNameFormat>[email protected]{project.version}</tagNameFormat>
<commitByProject>true</commitByProject>
<pushChanges>true</pushChanges>
</configuration>
</plugin>
Czy istnieje bardziej elegancki sposób organizowania modułów Maven i repozytoriów Git w celu uwolnienia wielu artefaktów Maven? Alternatywnie, czy ktoś znalazł rozwiązanie do klonowania rekurencyjnie podmodułów Git podczas kasowania tuż przed rozmieszczaniem artefaktów?
To brzmi jak wielo- maven Kompilacja modułu, która w konsekwencji musi znajdować się w jednym repozytorium Git zamiast w submodułach, a ponadto dzięki zastosowaniu wielomodułowej kompilacji możesz po prostu wdrożyć/zwolnić całe moduły w jednym kroku. Tak więc pytanie brzmi: dlaczego chcesz bardziej skomplikować ? – khmarbaise
@khmarbaise: dzięki za komentarz, zdecydowaliśmy się przejść do jednego repozytorium Git z wieloma modułami Maven, ponieważ nie mogliśmy znaleźć prostego rozwiązania dla naszej struktury projektu – almeidap
IMHO tak naprawdę nie ma dobrej opcji. kroki podczas wydania tworzą tag _, z wartością th e semantyczny, który przywracający kod z tego tagu da mi cały kod dla tego wydania. Ale z submodułami GIT, nie ma sposobu, aby upewnić się, że użytkownik dostaje wszystko z tego tagu, ponieważ z łatwością może zobaczyć moduł podrzędny jako pierwszy. –