J'essaie de télécharger un artefact téléchargé sur Nexus à l'aide de CURL. Mais je ne parviens pas à le télécharger. L'exécution de la commande ci-dessous à partir de l'invite de commande ne télécharge pas le fichier Zip requis et j'utilise le compte administrateur Nexus
curl -X GET -u userid:pwd "http://nexusserver:8081/nexus/service/local/artifact/maven/redirect?r=Repo_Name&g=GroupID&a=artifactID&v=LATEST&p=Zip" -O
Ai-je correctement formé l'URL? J'ai essayé de parcourir l'URL ( http: // nexusserver: 8081/nexus/service/local/artifact/maven/redirect? R = Repo_Name & g = GroupID & a = artifactID & v = LATEST & p = Zip ), mais j'ai obtenu HTTP 404 Introuvable dans Nexus Repository Manager. J'utilise la version 3.0.2-02 de Nexus. Je suis nouveau sur nexus et toute aide est grandement appréciée.
Merci
Dans les nouvelles versions de nexus, vous pouvez:
Sur bash, cela se résume à:
$ curl -sSL -X GET -G "http://mynexus3.local/service/rest/v1/search/assets" \
-d repository=maven-snapshots \
-d maven.groupId=my.group.id \
-d maven.artifactId=my-artifact \
-d maven.baseVersion=1.0-SNAPSHOT \
-d maven.extension=jar \
-d maven.classifier=jar-with-dependencies \
| grep -Po '"downloadUrl" : "\K.+(?=",)' \
| xargs curl -fsSL -o my-artifact.jar
Le premier bloc recherchera votre artefact et produira quelque chose de similaire à
{
"items" : [ {
"downloadUrl" : "http://mynexus3.local/repository/maven-snapshots/my/group/id/my-artifact/1.0-SNAPSHOT/my-artifact-1.0-20180821.085657-1-jar-with-dependencies.jar",
"path" : "/my/group/id/my-artifact/1.0-SNAPSHOT/my-artifact-1.0-20180821.085657-1-jar-with-dependencies.jar",
"id" : "foo",
"repository" : "maven-snapshots",
"format" : "maven2",
"checksum" : {
"sha1" : "bar",
"md5" : "baz"
}
} ],
"continuationToken" : null
}
Ensuite, vous pouvez utiliser grep ou quelque chose de similaire pour extraire l'URL de téléchargement. Enfin, vous passez l'URL extraite pour recourber à nouveau pour télécharger votre artefact. (testé avec Nexus 3.13)
En effet, Sonatype a brillamment décidé de changer l'API REST d'une manière totalement incompatible de Nexus2 à Nexus3 - pour le plaisir des administrateurs système. Ainsi,/service/local/artifact/maven/n'est plus disponible dans Nexus3.
Une manière alternative - indépendante de la version Nexus - utilise Maven:
mvn -Dmaven.wagon.http.ssl.insecure = true org.Apache.maven.plugins: maven-dependency-plugin: 3.0.1: copy -Dartifact = mvngroup: mvnartifactid: mvnversion: mvnpackaging -DoutputDirectory =. /
où "mvnpackaging" peut être jar, war, Zip ....
Vous pouvez utiliser le point de terminaison suivant:GET /service/rest/v1/search/assets/download
qui fait ce qui suit:
Ce point de terminaison est spécialement conçu pour rechercher un actif, puis rediriger la demande vers le downloadUrl de cet actif
Exemple:curl -u admin:admin123 -X GET 'http://localhost:8081/service/rest/v1/search/assets?group=org.osgi&name=org.osgi.core&version=4.3.1&maven.extension=jar&maven.classifier
Les artefacts se trouvent désormais sous des URL similaires à:
http: // nexusserver: 8081/repository / {nom du référentiel} /
En utilisant cela et certaines connaissances des chemins Maven, vous pouvez accéder à des artefacts.
Cela dit, l'URL que vous utilisez ne fonctionnera pas encore aussi, car il s'agissait d'un appel API REST que nous avons supprimé pour le moment.
Dans les versions plus récentes de Nexus Repository, nous avons les débuts de notre REST. Si vous mettez à niveau vers 3.3 au minimum (et 3.5 car il est maintenant disponible), vous pouvez accéder aux débuts de ce travail à:
http: // nexusserver: 8081/swagger-ui /
Il s'agit d'une fonctionnalité bêta qui est susceptible de changer, c'est-à-dire que si vous écrivez quelque chose et qu'il se casse dans une version plus récente, vous devrez y remédier, mais vous pouvez y jeter un œil pour voir s'il existe des points de terminaison qui vous aideront.
Vous voudrez probablement jeter un œil à: http: // localhost: 8081/swagger-ui/#!/Search/search