J'ai un projet non-Java qui produit un artefact de construction versionné et je souhaite le télécharger dans un référentiel Nexus. Parce que le projet n'est pas Java, il n'utilise pas Maven pour les builds. Et je préfère ne pas introduire de fichiers Maven / POM juste pour obtenir des fichiers dans Nexus.
Les liens sur les blogs vers l'API Nexus REST aboutissent tous sur un mur de connexion, sans lien "Créer un utilisateur" que je puisse voir.
Alors, quel est le meilleur moyen (ou tout moyen raisonnable) de télécharger des artefacts de construction dans un référentiel Nexus sans Maven? "bash + curl" serait génial, ou même un script Python.
Réponses:
Avez-vous envisagé d'utiliser la ligne de commande Maven pour télécharger des fichiers?
Cela générera automatiquement le Maven POM pour l'artefact.
Mettre à jour
L'article suivant de Sonatype indique que le plugin maven "deploy-file" est la solution la plus simple, mais il fournit également quelques exemples utilisant curl:
https://support.sonatype.com/entries/22189106-How-can-I-programately-upload-an-artifact-into-Nexus-
la source
Utilisation de curl:
Vous pouvez voir ce que signifient les paramètres ici: https://support.sonatype.com/entries/22189106-How-can-I-programately-upload-an-artifact-into-Nexus-
Pour que les autorisations pour ce travail fonctionnent, j'ai créé un nouveau rôle dans l'interface graphique d'administration et j'ai ajouté deux privilèges à ce rôle: Artifact Download et Artifact Upload. Le rôle standard «Repo: All Maven Repositories (Full Control)» ne suffit pas. Vous ne trouverez pas cela dans la documentation de l'API REST fournie avec le serveur Nexus, donc ces paramètres peuvent changer à l'avenir.
Sur un problème de Sonatype JIRA , il a été mentionné qu'ils "vont réviser l'API REST (et la façon dont sa documentation est générée) dans une prochaine version, probablement plus tard cette année".
la source
Pas besoin d'utiliser ces commandes .. vous pouvez utiliser directement l'interface web nexus afin de télécharger votre JAR en utilisant les paramètres GAV.
C'est donc très simple.
la source
Artifact Upload
. Malheureusement, je n'ai rien trouvé dans la documentation mentionnant cela ... (Edit: Je vois, Ed j'ai déjà souligné cela )Vous pouvez ABSOLUMENT le faire sans utiliser quoi que ce soit de MAVEN. J'utilise personnellement NING HttpClient (v1.8.16, pour prendre en charge java6).
Pour une raison quelconque, Sonatype rend incroyablement difficile de déterminer ce que les URL, en-têtes et charges utiles corrects sont censés être; et j'ai dû renifler le trafic et deviner ... Il y a des blogs / documentation à peine utiles là-bas, mais soit ils ne sont pas pertinents
oss.sonatype.org
, soit ils sont basés sur XML (et j'ai découvert que cela ne fonctionne même pas). La documentation de merde de leur part, à mon humble avis, et j'espère que les futurs chercheurs pourront trouver cette réponse utile. Un grand merci à https://stackoverflow.com/a/33414423/2101812 pour leur message, car cela a beaucoup aidé.Si vous sortez ailleurs que
oss.sonatype.org
, remplacez-le simplement par le bon hôte.Voici le code (sous licence CC0) que j'ai écrit pour accomplir cela. Où
profile
est votre identifiant de profil sonatype / nexus (tel que4364f3bbaf163
) etrepo
(tel quecomdorkbox-1003
) sont analysés à partir de la réponse lorsque vous téléchargez votre POM / Jar initial.Fermer le repo:
Promouvoir le repo:
Déposer le dépôt:
Supprimer les problèmes de signature:
Téléchargements de fichiers:
EDIT1:
Comment obtenir l'activité / le statut d'un repo
la source
Les appels que vous devez effectuer contre Nexus sont des appels API REST.
Le plugin maven-nexus est un plugin Maven que vous pouvez utiliser pour effectuer ces appels. Vous pouvez créer un pom factice avec les propriétés nécessaires et effectuer ces appels via le plugin Maven.
Quelque chose comme:
Choses supposées:
En fin de compte, tout ce que cela fait, c'est créer des appels REST dans Nexus. Il existe une API Nexus REST complète, mais j'ai eu peu de chance de trouver de la documentation qui n'est pas derrière un paywall. Vous pouvez activer le mode de débogage pour le plugin ci-dessus et le comprendre cependant en utilisant
-Dnexus.verboseDebug=true -X
.Vous pouvez également théoriquement accéder à l'interface utilisateur, activer le panneau Firebug Net et surveiller les POST / service et en déduire également un chemin.
la source
pour ceux qui en ont besoin en Java, en utilisant apache httpcomponents 4.0:
la source
In ruby https://github.com/RiotGames/nexus_cli Un wrapper CLI autour des appels REST Sonatype Nexus.
Exemple d'utilisation:
La configuration se fait via le
.nexus_cli
fichier.la source
Vous pouvez également utiliser la méthode de déploiement direct à l'aide de curl. Vous n'avez pas besoin d'un pom pour votre fichier, mais il ne sera pas généré également, donc si vous en voulez un, vous devrez le télécharger séparément.
Voici la commande:
la source
Si vous avez besoin d'une interface de ligne de commande pratique ou d'une API python, consultez repositorytools
En l'utilisant, vous pouvez télécharger un artefact vers nexus avec la commande
Pour que cela fonctionne, vous devrez également définir des variables d'environnement
la source
Vous pouvez télécharger manuellement les artefacts en cliquant sur le bouton de téléchargement des artefacts sur le serveur Nexus et fournir les propriétés GAV nécessaires pour le téléchargement (il s'agit généralement de la structure de fichier pour stocker l'artefact)
la source
Pour les versions récentes de Nexus OSS (> = 3.9.0)
https://support.sonatype.com/hc/en-us/articles/115006744008-How-can-I-programmatically-upload-files-into-Nexus-3-
Exemple pour les versions 3.9.0 à 3.13.0:
la source
@Adam Vandenberg Pour le code Java pour POST sur Nexus. https://github.com/manbalagan/nexusuploader
la source
Vous pouvez utiliser curl à la place.
la source