Publier un instantané vs publier une publication dans Gradle avec intégration continue
je suis juste en train d'apprendre Gradle, venant à la fois D'une Ant+Ivy et Maven background et j'essaye d'enrouler ma tête autour de la bonne façon de publier une version de mon logiciel en utilisant gradle. J'ai également besoin d'intégrer constamment mes projets sans avoir à libérer constamment des artéfacts indépendants.
Ant + Ivy
dans le monde Ant + Ivy, je peux créer publisnapshot et publirelease cibles. Ceux-ci peuvent chaque utilisez différents résolveurs Ivy pour résoudre et publier à mon snapshot séparé ou des dépôts de libération dans Nexus.
Maven
avec Maven, je peux définir un snapshotRepository
ou repository
dans ma section distributionManagement
pour avoir maven publier à mon snapshot séparé ou libérer des dépôts dans Nexus.
Gradle
entre maintenant gradle. Comment puis-je parvenir à ce même la fonctionnalité? J'utilise des dépôts de style ivy.
Merci pour tout ce que vous pouvez nous fournir.
RÉPONSE
grâce à la réponse de René ci-dessous, j'ai finalement pu créer une solution réalisable. Le nœud du problème était que je devais constamment l'intégrer dans tous mes projets. Pour ce faire, j'ai pensé que déclarer une dépendance en utilisant le numéro de version latest.integration
était le seul moyen d'y arriver. la dernière version de mes bibliothèques, et donc j'ai eu besoin d'utiliser des dépôts de style ivy.
en fait, il y a d'autres moyens de tirer dans la dernière version des bibliothèques afin d'intégrer en permanence mon logiciel à travers tous les projets. La solution est d'utiliser le uploadArchives
exactement comme René a énuméré ci-dessous (notez aussi que vous aurez besoin de apply plugin: 'maven'
pour que cela fonctionne. Assurez-vous que vos dépôts sont aussi de style maven, et lorsque vous déclarez une dépendance, vous pouvez utiliser dynamic numéros de version comme indiqué ici . Dans mon cas, j'ai listé un numéro de version global dans mon common.gradle et en aval des projets, j'ai utilisé version: version
pour faire référence à la version globale de la variable. De cette façon, chaque artefact dans mon système a la même version. Quand il est temps de libérer, je peux changer cela de 1.0-SNAPSHOT à 1.0 et construire chacun dans l'ordre.
2 réponses
vous pouvez configurer le snapshot et le release dépôt dans la tâche "Upload" (par exemple le uploadArchives
) tâche:
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');
}
}
}
}
Pour *-SNAPSHOT
versions snapshotRepository
est utilisé. Sinon, le libère repo est utilisé.
si vous souhaitez utiliser le nouveau plugin maven-publish
, vous pouvez télécharger vers différents dépôts en utilisant un if
déclaration:
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"
}
}
}
}
la Référence: maven-de publier et de réglage snapshotRepository et releaseRepository