Wdrażanie artefaktu Maven do wielu repozytoriów z różnymi ustawieniami
Mamy wiele projektów Java, które są zbudowane w oparciu o Jenkins. Są one dobrze wdrożone na naszym własnym serwerze Nexus. Problem polega na tym, że musimy udostępnić te biblioteki stronie trzeciej, ale bez kodu źródłowego. Tak więc dla każdego projektu w Nexusie mamy:
Wydania repozytorium dla naszych deweloperów (zawiera wdrożony kod źródłowy)Migawki repozytoria dla naszych programistów (zawiera wdrożony kod źródłowy)Wersja zewnętrzna repozytorium (tylko JAR + POM)(i dobrze byłoby mieć):Migawka strony trzeciej repozytorium (tylko JAR + POM) na nocne kompilacje osób trzecichPytanie brzmi: jak zwykle jest to obsługiwane w świecie Jenkins / Nexus? Wolałbym mieć jedno zadanie w Jenkins, które obsługuje proces tworzenia CI i proces wydawania (wdrażania artefaktów) „automatycznie”. Obecnie używam wielu<distributionManagement>
profile w naszym głównym katalogu głównym pom.xml (dołączone przez wszystkie projekty):
[...]
<profiles>
<profile>
<id>default</id>
<distributionManagement>
<repository>
<id>releases</id>
<name>Release</name>
<url>http://path/to/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://path/to/nexus/content/repositories/snapshots/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
</profile>
<profile>
<id>third-party</id>
<distributionManagement>
<repository>
<id>releases</id>
<name>Release</name>
<url>http://path/to/nexus/content/repositories/third-party/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://path/to/nexus/content/repositories/third-party-snapshots/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
</profile>
</profiles>
Z dokumentów Maven nie można korzystać z wielu repozytoriów podczas tego samego cyklu życia kompilacji, nie wspominając o tym, że potrzebujemy / nie potrzebujemy źródła na podstawie docelowego repo.
Mogę zrobić sztuczkę, tworząc pracę w Jenkins, z Maven „Cele i opcje”:clean deploy -P third-party
a następnie dodanie akcji po kompilacji - „Rozmieść artefakty do repozytorium Maven” z danymi „domyślnymi” - ale w tym przypadku tylko SNAPSHOT będą przechodzić zarówno przez repo, jak i artefakty wydane przezWtyczka Release Jenkins Maven przechodzą tylko do jednego repozytorium.
Jakieś praktyczne pomysły, jak mogę to zrobić bez nadmiernego komplikowania naszej hierarchii zadań CI?
Z góry dziękuję!