J'ai téléchargé avec succès mes pots dans un dépôt nexus en utilisant le plugin maven pour gradle mais il n'a pas téléchargé les sources. Voici ma configuration:
uploadArchives {
repositories{
mavenDeployer {
repository(url: "http://...") {
authentication(userName: "user", password: "myPassword")
}
}
}
}
J'ai recherché et trouvé que je peux ajouter les sources en ajoutant une nouvelle tâche.
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
}
Cela fonctionne bien mais je pense qu'il doit y avoir une meilleure solution en configurant le plugin maven, quelque chose comme uploadSource = true comme ceci:
uploadArchives {
repositories{
mavenDeployer {
repository(url: "http://...") {
authentication(userName: "user", password: "myPassword")
}
uploadSources = true
}
}
}
Il n'y a pas de meilleure solution que ce que vous avez décrit vous-même. Le plugin gradle maven télécharge tous les artefacts générés dans le projet en cours. C'est pourquoi vous devez créer explicitement un artefact "sources".
La situation ne change pas non plus lors de l'utilisation du nouveau plugin maven-publish . Ici, vous devez également définir explicitement des artefacts supplémentaires:
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.Java
artifact sourceJar {
classifier "sources"
}
}
}
}
La raison en est que gradle est plutôt un outil de construction général et non lié à des projets purs Java.
Vous pouvez utiliser plugin gradle-nexus
Pour utiliser le plugin, ajoutez les lignes ci-dessous et importez le plugin
buildscript {
repositories {
mavenLocal()
jcenter {
url "http://jcenter.bintray.com/"
}
}
dependencies {
classpath 'com.bmuschko:gradle-nexus-plugin:2.3'
}
}
apply plugin: 'com.bmuschko.nexus'
Ajoutez cette section, où vous allez configurer l'URL à déployer
nexus {
sign = false
repositoryUrl = 'http://localhost:8081/nexus/content/repositories/releases/'
snapshotRepositoryUrl = 'http://localhost:8081/nexus/content/repositories/internal-snapshots/'
}
Remarque: Vous devez avoir dans ~/.gradle/gradle.properties
nexusUsername = deployment
nexusPassword = deployment123