Déploiement d'artefact Maven sur plusieurs référentiels avec des paramètres différents
Nous avons de nombreux projets Java, qui sont CI construit avec Jenkins. Ils sont déployés à notre propre serveur Nexus amende juste.
Le problème est, nous avons besoin de fournir ces bibliothèques à un tiers, mais sans le code source.
Ainsi, pour chaque projet, au programme nous avons:
- Communiqués de référentiel pour nos devs (comprend déployé code source)
- Instantanés des référentiels pour nos devs (comprend déployé code source)
- Tiers de presse répertoire de dépôt (POT + POM)
- (et il serait bon d'avoir): Tiers instantané répertoire de dépôt (POT + POM) pour des tiers, les nightly builds
La question est: comment est-ce généralement traités dans Jenkins/Nexus monde? Je préfère avoir un seul Emploi dans Jenkins qui gère le CI de construire et de la libération (artefact de déploiement des processus de la "automatiquement".
Actuellement, je suis en utilisant plusieurs <distributionManagement>
profils dans notre "racine principale pom.xml" (inclus par tous les projets):
[...]
<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>
De l'Maven docs, il semble y avoir aucun moyen de l'utilisation de plusieurs dépôts au cours de la même version du cycle de vie, pour ne pas mentionner le fait que nous avons besoin/n'ont pas besoin de la source en fonction de la cible repo.
Je peux faire un truc avec la création d'un Emploi dans Jenkins, avec le Maven "les Objectifs et les options": clean deploy -P third-party
puis en ajoutant de l'après-construire l'action "Déployer des artefacts Maven repository" avec le "défaut" de données, mais dans ce cas, seuls les Instantanés allons à la fois les pensions de titres et d'objets débloqués via Jenkins, Maven Version Plug-in sont dans le même référentiel.
En pratique des idées comment puis-je le faire sans surcharger nos ie travail de la hiérarchie?
Merci d'avance!
source d'informationauteur Siaynoq
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement gérer tout cela dans le Nexus. Créer un référentiel cible qui contient un modèle comme celui utilisé dans le préconfiguré exemple "Tous les mais les sources (Maven 2)" et étroite que les cibles encore plus loin avec un autre modèle qui limite le groupid, artifactid et peut-être même version.
Puis créer un privilège qui utilise ce référentiel cible et de l'attribuer à l'utilisateur ou le rôle que vous voulez avoir l'accès.
Pas besoin de faire de multiples déploiements ou quelque chose du genre..
Voir http://books.sonatype.com/nexus-book/reference/repository-targets.html
Vous pouvez utiliser Maven Wagon Plugin et de télécharger un seul bocal à un emplacement distant sur la phase de déploiement.