web-dev-qa-db-fra.com

Téléchargez des sources vers le référentiel Nexus avec Gradle

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
        }
    }
}
21
gllambi

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.

8
Sebi

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
5
Eddú Meléndez