plugin introduccion integración integracion entrega curso continua gradle dependency-management nexus

gradle - introduccion - integración continua y entrega continua



Publicación de instantáneas frente a la publicación de publicaciones en Gradle con integración continua (2)

Puede configurar la instantánea y el repositorio de la versión en la tarea ''Cargar'' (por ejemplo, la uploadArchives ):

uploadArchives { repositories { mavenDeployer { repository(url: ''http://myCompanyRepo.com:8081/releases'') { authentication(userName: ''admin'', password: ''password''); } snapshotRepository(url: ''http://myCompanyRepo.com:8081/snapshots'') { authentication(userName: ''admin'', password: ''password''); } } } }

Para las versiones *-SNAPSHOT se usa el snapshotRepository . De lo contrario se utiliza el repositorio de versiones .

Solo estoy aprendiendo Gradle, proveniente de Ant + Ivy y Maven y estoy tratando de envolver mi cabeza en la forma correcta de publicar una versión de lanzamiento de mi software usando Gradle. También necesito integrar constantemente mis proyectos sin tener que lanzar constantemente artefactos independientes.

Ant + Ivy

En el mundo de Ant + Ivy, puedo crear publishSnapshot y publishRelease target. Cada uno de ellos puede usar diferentes resolvedores Ivy para resolver y publicar en mis instantáneas o repositorios de publicación separados en Nexus.

Maven

Con Maven, puedo definir un repository o un repository snapshotRepository en mi sección de administración de distributionManagement para que Maven publique en mis repositorios de instantáneas o lanzamientos separados en Nexus.

Gradle

Ahora entra en gradle. ¿Cómo puedo lograr esta misma funcionalidad? Estoy usando repositorios de hiedra.

Gracias por cualquier información que pueda proporcionar.

RESPONDER

Gracias a la respuesta de René a continuación, finalmente pude crear una solución viable. El quid de la cuestión era que necesitaba integrarme constantemente en todos mis proyectos. Para hacer esto, pensé que declarar una dependencia utilizando el número de versión latest.integration era la única forma de obtener la última versión de mis bibliotecas, y por lo tanto necesitaba usar repositorios de estilo hiedra.

De hecho, hay otras formas de obtener la última versión de las bibliotecas para integrar continuamente mi software en todos los proyectos. La solución es usar el uploadArchives exactamente como René ha enumerado a continuación (también tenga en cuenta que necesitará apply plugin: ''maven'' para que esto funcione. Asegúrese de que sus repositorios también sean de estilo maven, y al declarar una dependencia, puede usar Dynamic números de versión como se muestra here . En mi caso, enumeré un número de versión global en mi common.gradle y en proyectos posteriores, usé version: version para hacer referencia a la variable de versión global. De esta manera, cada artefacto en mi sistema tiene la misma versión. Cuando sea el momento de lanzar, puedo cambiar esto de 1.0-SNAPSHOT a 1.0 y construir cada uno en orden.


Si desea utilizar el nuevo complemento de maven-publish , puede subir a diferentes repositorios utilizando una sentencia if :

apply plugin: ''maven-publish'' ... publishing { publications { mavenJava(MavenPublication) { from components.java } } repositories { maven { credentials { username "anonymous" } if(project.version.endsWith(''-SNAPSHOT'')) { url "http://example/artifactory/libs-snapshot-local" } else { url "http://example/artifactory/libs-release-local" } } } }

Referencia: maven-publish y configuración snapshotRepository y releaseRepository