Tengo un proyecto que no es Java que produce un artefacto de compilación versionado y quiero cargarlo en un repositorio de Nexus. Debido a que el proyecto no es Java, no usa Maven para compilaciones. Y prefiero no introducir archivos Maven / POM solo para introducir archivos en Nexus.
Todos los enlaces de los blogs a la API de REST de Nexus terminan en un muro de inicio de sesión, sin ningún enlace "crear usuario" que pueda ver.
Entonces, ¿cuál es la mejor (o razonable) forma de cargar artefactos de compilación en un repositorio de Nexus sin Maven? "bash + curl" sería genial, o incluso un script de Python.
Respuestas:
¿Está considerando usar la línea de comandos de Maven para cargar archivos?
Esto generará automáticamente el Maven POM para el artefacto.
Actualizar
El siguiente artículo de Sonatype afirma que el complemento de maven "deploy-file" es la solución más sencilla, pero también proporciona algunos ejemplos con curl:
https://support.sonatype.com/entries/22189106-How-can-I-prograntly-upload-an-artifact-into-Nexus-
fuente
Usando curl:
Puede ver lo que significan los parámetros aquí: https://support.sonatype.com/entries/22189106-How-can-I-programatic-upload-an-artifact-into-Nexus-
Para que los permisos de este trabajo funcionen, creé un nuevo rol en la GUI de administrador y agregué dos privilegios a ese rol: Descarga de artefactos y Carga de artefactos. El rol estándar "Repo: todos los repositorios Maven (control total)" no es suficiente. No encontrará esto en la documentación de la API REST que viene incluida con el servidor Nexus, por lo que estos parámetros pueden cambiar en el futuro.
En un problema de Sonatype JIRA , se mencionó que "van a revisar la API REST (y la forma en que se genera su documentación) en una próxima versión, probablemente a finales de este año".
fuente
No es necesario utilizar estos comandos. Puede utilizar directamente la interfaz web nexus para cargar su JAR utilizando los parámetros GAV.
Entonces es muy simple.
fuente
Artifact Upload
. Desafortunadamente, no pude encontrar nada en los documentos que mencionen esto ... (Edición: Ya veo, Ed, ya lo he señalado )ABSOLUTAMENTE puede hacer esto sin usar nada relacionado con MAVEN. Yo personalmente uso el NING HttpClient (v1.8.16, para admitir java6).
Por alguna razón, Sonatype hace que sea increíblemente difícil averiguar cuáles se supone que son las URL, los encabezados y las cargas útiles correctas; y tuve que oler el tráfico y adivinar ... Hay algunos blogs / documentación apenas útiles allí, sin embargo, o es irrelevante
oss.sonatype.org
o está basado en XML (y descubrí que ni siquiera funciona). La documentación de mierda de su parte, en mi humilde opinión, y espero que los futuros buscadores puedan encontrar esta respuesta útil. Muchas gracias a https://stackoverflow.com/a/33414423/2101812 por su publicación, ya que ayudó mucho.Si lo libera en otro lugar que no sea
oss.sonatype.org
, simplemente reemplácelo con el host correcto.Aquí está el código (con licencia CC0) que escribí para lograr esto. ¿Dónde
profile
está su sonatype / nexus profileID (como4364f3bbaf163
) yrepo
(comocomdorkbox-1003
) se analizan a partir de la respuesta cuando carga su POM / Jar inicial.Cerrar repositorio:
Promocionar repositorio:
Dejar repositorio:
Eliminar turds de firma:
Cargas de archivos:
EDIT1:
Cómo obtener la actividad / estado de un repositorio
fuente
Las llamadas que debe realizar contra Nexus son llamadas de API REST.
El plugin maven-nexus-plugin es un plugin de Maven que puede utilizar para realizar estas llamadas. Puede crear un pom ficticio con las propiedades necesarias y realizar esas llamadas a través del complemento Maven.
Algo como:
Cosas asumidas:
En última instancia, todo lo que está haciendo es crear llamadas REST en Nexus. Hay una API REST completa de Nexus, pero he tenido poca suerte para encontrar documentación que no esté detrás de un muro de pago. Puede activar el modo de depuración para el complemento anterior y, sin embargo, averiguarlo usando
-Dnexus.verboseDebug=true -X
.En teoría, también podría ir a la interfaz de usuario, activar el panel de Firebug Net y observar las POST / service y deducir una ruta allí también.
fuente
para aquellos que lo necesiten en Java, usando apache httpcomponents 4.0:
fuente
En ruby https://github.com/RiotGames/nexus_cli Un envoltorio CLI alrededor de las llamadas REST de Sonatype Nexus.
Ejemplo de uso:
La configuración se realiza a través del
.nexus_cli
archivo.fuente
También puede utilizar el método de implementación directa mediante curl. No necesita un pom para su archivo, pero no se generará tan bien, por lo que si desea uno, tendrá que cargarlo por separado.
Aquí está el comando:
fuente
Si necesita una interfaz de línea de comandos conveniente o una API de Python, consulte repositorytools
Usándolo, puede cargar artefactos a nexus con el comando
Para que funcione, también deberá establecer algunas variables de entorno
fuente
Puede cargar manualmente los artefactos haciendo clic en el botón cargar artefactos en el servidor Nexus y proporcionar las propiedades GAV necesarias para la carga (generalmente es la estructura de archivo para almacenar el artefacto)
fuente
Para versiones recientes de Nexus OSS (> = 3.9.0)
https://support.sonatype.com/hc/en-us/articles/115006744008-How-can-I-programically-upload-files-into-Nexus-3-
Ejemplo para las versiones 3.9.0 a 3.13.0:
fuente
@Adam Vandenberg Para código Java para POST en Nexus. https://github.com/manbalagan/nexusuploader
fuente
Puedes usar curl en su lugar.
fuente