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 DrittanbieternDie 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!