Déploiement de l’artefact Maven sur plusieurs référentiels avec des parameters différents

Nous avons de nombreux projets Java, qui sont construits avec Jenkins. Celles-ci sont correctement déployées sur notre propre serveur Nexus. Le problème est que nous devons fournir ces bibliothèques à un tiers, mais sans le code source. Donc, pour chaque projet, dans Nexus, nous avons:

  • Libère le référentiel de nos développeurs (inclut le code source déployé)
  • Référentiels d’ instantanés pour nos développeurs (inclut le code source déployé)
  • Référentiel de versions tierces (uniquement JAR + POM)
  • (et ce serait bien d’avoir): référentiel de capture instantanée tiers (uniquement JAR + POM) pour les constructions nocturnes tierces

La question qui se pose est la suivante: comment cela est-il généralement traité dans le monde Jenkins / Nexus? Je préférerais qu’il n’y ait qu’un seul Job dans Jenkins, qui gère “automatiquement” la construction de CI et le processus de publication (déploiement d’artefacts). J’utilise actuellement plusieurs profils dans notre “racine principale pom.xml” (incluse dans tous les projets):

 [...]   default   releases Release http://path/to/nexus/content/repositories/releases/   snapshots Snapshot http://path/to/nexus/content/repositories/snapshots/ false     third-party   releases Release http://path/to/nexus/content/repositories/third-party/   snapshots Snapshot http://path/to/nexus/content/repositories/third-party-snapshots/ false     

D’après les documents Maven, il ne semble pas être possible d’utiliser plusieurs référentiels au cours du même cycle de vie de génération, sans oublier le fait que nous avons besoin / pas besoin de la source basée sur le référentiel cible.

Je peux faire une astuce en créant un Job dans Jenkins, avec les “Objectifs et options” de Maven: clean deploy -P third-party , puis en ajoutant l’action Post-build – “Déployer des artefacts dans le référentiel Maven” avec les données “par défaut”. – mais dans ce cas, seuls les instantanés vont à la fois au référentiel et les artefacts publiés via le plug-in Jenkins Maven Release vont dans un seul référentiel.

Toutes les idées pratiques, comment puis-je faire cela sans trop compliquer notre hiérarchie de travail CI?

Merci d’avance!

Vous pouvez simplement gérer tout cela dans Nexus. Créez une cible de référentiel contenant un modèle similaire à celui utilisé dans l’exemple préconfiguré “Tout sauf les sources (Maven 2)” et affinez cette cible avec un autre modèle qui restreint le groupid, l’artefact et peut-être même la version.

Créez ensuite un privilège qui utilise cette cible de référentiel et atsortingbuez-le à l’utilisateur ou au rôle auquel vous souhaitez accéder.

Pas besoin de faire plusieurs déploiements ou quelque chose comme ça.

Voir http://books.sonatype.com/nexus-book/reference/repository-targets.html

Vous pouvez utiliser le plug-in Maven Wagon et télécharger un seul fichier jar vers un emplacement distant lors de la phase de déploiement.