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