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 trzecich

Pytanie 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ę!

questionAnswers(2)

yourAnswerToTheQuestion