2
votes

gradle publish ne récupère pas d'artefacts: "La tâche n'a déclaré aucune sortie malgré l'exécution d'actions."

Je migre un projet java de gradle 2.x vers 5.3.1.

Le dernier problème est qu'aucun artefact (un tar dans notre cas) n'est publié dans un artefact.

La configuration de build.gradle est

> Task :$MODULE:artifactoryPublish
Task ':$MODULE:artifactoryPublish' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
:$MODULE:artifactoryPublish (Thread[Execution worker for ':',5,main]) completed. Took 0.002 secs.
:artifactoryDeploy (Thread[Execution worker for ':',5,main]) started.

> Task :artifactoryDeploy
Task ':artifactoryDeploy' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Deploying build descriptor to: $OUR_ARTIFACTORY/artifactory/api/build
Build successfully deployed. Browse it in Artifactory under $OUR_ARTIFACTORY/artifactory/webapp/builds/$MODULE/1554465369336
:artifactoryDeploy (Thread[Execution worker for ':',5,main]) completed. Took 0.155 secs.

Et dans le module

task('dist', type: Tar) {
    dependsOn('jar')
    archiveName "$MODULE-${version}.${extension}"
...
}
publishing {
    publications {
        mavenJava(MavenPublication)
                {
                    artifact dist {
                    }
                }
    }
}
configurations.archives.artifacts.clear()
artifacts {
    archives dist
}

Maintenant quand je fais ./gradlew --info: $ MODULE: artifactoryPublish il se plaint de sorties manquantes et ne publie pas le tar dans un artificiel.

Comment résoudre ce problème?

subprojects {
    apply plugin: "com.jfrog.artifactory"
    project.ext {
        artifactoryConfig = new File(project.gradle.gradleUserHomeDir, "artifactory.gradle")
    }
    if (artifactoryConfig.exists()) {
        apply plugin: 'maven'
        apply from: artifactoryConfig
    }
    sourceCompatibility = 1.8
    repositories {
        mavenCentral()
        maven { url $OUR_ARTIFACTORY }
    }
    publishing {
        publications {
            mavenJava(MavenPublication) {
                from components.java
            }
        }
    }
}
artifactory {
    publish {
        contextUrl = "${artifactoryBaseUrl}"
        repository {
            repoKey = "libs-release-local"
            username = "${artifactoryUsername}"
            password = "${artifactoryPassword}"
        }
    }
    resolve {
        repoKey = 'repos'
    }
}


4 commentaires

Concernant «il se plaint de sorties manquantes»: cela ne me semble pas suspect en soi, car les tâches en question n'ont pas de sorties basées sur des fichiers. Qu'est-ce que est réellement déployé sur Artifactory? Je pose la question, car elle dit: "Build déployé avec succès."


@Chriki Rien n'est déployé sur l'artefact (la compilation est vide). C'est le problème.


une chance à ce sujet?


@Abhimaan Oui; voir la réponse acceptée.


3 Réponses :


0
votes

Il s'est avéré que la solution était d'ajouter

artifactoryPublish {
    publications('mavenJava')
}


0 commentaires

1
votes

Pour moi, le problème était que l'URL et les informations d'identification étaient nulles. Cela a abouti au même message d'erreur (la tâche n'a déclaré aucune sortie).

artifactory {
    contextUrl = artifactoryUrl

    publish {
        repository {
            username = artifactoryPublishUser
            password = artifactoryPublishPassword


0 commentaires

1
votes

0 commentaires