Bereitstellen von Maven-Artefakten in mehreren Repositorys mit unterschiedlichen Einstellungen

Wir haben zahlreiche Java-Projekte, die CI mit Jenkins erstellt. Diese werden problemlos auf unserem eigenen Nexus-Server bereitgestellt. Das Problem ist, dass wir diese Bibliotheken an Dritte weitergeben müssen, jedoch ohne den Quellcode. Für jedes Projekt in Nexus haben wir also:

Releases Repository für unsere Entwickler (enthält implementierten Quellcode)Schnappschüsse Repositorys für unsere Entwickler (einschließlich bereitgestelltem Quellcode)Freigabe durch Dritte Repository (nur JAR + POM)(und wäre gut zu haben):Schnappschuss von Drittanbietern Repository (nur JAR + POM) für nächtliche Builds von Drittanbietern

Die Frage ist: Wie wird das normalerweise in der Jenkins / Nexus-Welt gehandhabt? Ich würde es vorziehen, einen einzigen Job in Jenkins zu haben, der den CI-Build und den Freigabeprozess (Artefakt-Bereitstellung) "automatisch" erledigt. Zur Zeit benutze ich mehrere<distributionManagement> Profile in unserer "main root pom.xml" (in allen Projekten enthalten):

[...]
<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>

In den Maven-Dokumenten scheint es keine Möglichkeit zu geben, mehrere Repositorys während desselben Build-Lebenszyklus zu verwenden, ganz zu schweigen von der Tatsache, dass wir die Quelle basierend auf dem Ziel-Repository benötigen / nicht benötigen.

Ich kann einen Trick mit dem Erstellen eines Jobs in Jenkins mit den Maven "Ziele und Optionen" machen:clean deploy -P third-party und dann die Aktion Nach dem Erstellen - "Artefakte im Maven-Repository bereitstellen" mit den "Standard" -Daten - hinzufügen. In diesem Fall werden jedoch nur SNAPSHOTs für Repos und Artefakte verwendet, die über freigegeben wurdenJenkins Maven Release Plug-in gehen nur in ein Repository.

Irgendwelche praktischen Ideen, wie kann ich dies tun, ohne unsere CI-Jobhierarchie zu komplizieren?

Danke im Voraus!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage