gradle publish不拾取工件:“0”;尽管执行了操作,任务仍未声明任何输出。”;

gradle publish不拾取工件:“0”;尽管执行了操作,任务仍未声明任何输出。”;,gradle,artifactory,publish,tar,Gradle,Artifactory,Publish,Tar,我正在将一个java项目从Gradle2.x迁移到5.3.1 最后一个问题是,没有任何人工制品(在我们的例子中是tar)发布到artifactory mainbuild.gradle中的配置是 subprojects { apply plugin: "com.jfrog.artifactory" project.ext { artifactoryConfig = new File(project.gradle.gradleUserHomeDir, "artifac

我正在将一个java项目从Gradle2.x迁移到5.3.1

最后一个问题是,没有任何人工制品(在我们的例子中是tar)发布到artifactory

main
build.gradle
中的配置是

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'
    }
}
在模块中

task('dist', type: Tar) {
    dependsOn('jar')
    archiveName "$MODULE-${version}.${extension}"
...
}
publishing {
    publications {
        mavenJava(MavenPublication)
                {
                    artifact dist {
                    }
                }
    }
}
configurations.archives.artifacts.clear()
artifacts {
    archives dist
}
现在,当我执行
/gradlew--info:$MODULE:artifactoryPublish
时,它会抱怨缺少输出,并且不会将tar发布到artifactory

如何解决这个问题

> 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.

事实证明,解决方案是添加

artifactoryPublish {
    publications('mavenJava')
}

对我来说,问题是url和凭据为空。这导致了相同的错误消息(任务未声明任何输出)


最有价值的提示是一个正在运行的示例


关于“it抱怨缺少输出”:这本身对我来说并不可疑,因为所讨论的任务没有任何基于文件的输出。在Artifactory上实际部署了什么?我这样问是因为它说:“Build successfully deployed。”@Chriki Nothing被部署到artifactory(构建是空的)。这就是问题所在。运气好吗?@Abhimaan是的;见公认的答案。
artifactory {
    contextUrl = artifactoryUrl

    publish {
        repository {
            username = artifactoryPublishUser
            password = artifactoryPublishPassword