您如何列出 Gradle 构建中的所有输出/生成文件?

How do you list out all output / generate files from a Gradle Build?

目前我正在使用以下内容生成我想要的另一个插件的输出文件列表 Github 版本。

[
        "${buildDir}/libs/${project.name}-${project.version}.jar",
        "${buildDir}/libs/${project.name}-${project.version}-javadoc.jar",
        "${buildDir}/libs/${project.name}-${project.version}-sources.jar"
]

我对此不是很满意,因为我手动指定了每种文件类型(doc、source、class)。我希望使它更通用,我可以在不修改任何项目的情况下重复使用,这些项目可能有更多或更少的输出,也可能不在默认位置,有些输出甚至可能不是 Java 输出。 IE。改变输出位置,任务到 运行 或插入脚本中的其他地方不应该破坏脚本的这一部分,并且应该可以在不编辑的情况下重复使用。 问题是如何像上面那样将所有输出的列表作为字符串列表。

更详细的代码片段:

...

plugins {
    id 'co.riiid.gradle' version '0.4.2'
}

...

ext {
    org = 'MicroTrader'
    repo = org + '/' + project.name
    releaseNotesFile = 'RELEASE_NOTES.md'
    host = 'github.com'
    hostUrl = 'https://' + host + '/'
    orgUrl = hostUrl + org
    websiteUrl = hostUrl + repo
    vcsUrl = websiteUrl + '.git'
    scmUrl = 'scm:git@' + host + ':' + repo + '.git'
    issueTrackerUrl = websiteUrl + '/issues'
    ossrhUsername = ((project.hasProperty('ossrhUsername') ? ossrhUsername : System.getenv('OSSRH_USER')) ?: System.getProperty('ossrh.user')) ?: ' '
    ossrhPassword = ((project.hasProperty('ossrhPassword') ? ossrhPassword : System.getenv('OSSRH_PASSWORD')) ?: System.getProperty('ossrh.password')) ?: ' '
    bintray_user = ((project.hasProperty('bintray_user') ? bintray_user : System.getenv('BINTRAY_USER')) ?: System.getProperty('bintray.user')) ?: ' '
    bintray_api_key = ((project.hasProperty('bintray_api_key') ? bintray_api_key : System.getenv('BINTRAY_KEY')) ?: System.getProperty('bintray.apikey')) ?: ' '
    artifactory_user = ((project.hasProperty('artifactory_user') ? artifactory_user : System.getenv('ARTIFACTORY_USER')) ?: System.getProperty('artifactory.user')) ?: ' '
    artifactory_password = ((project.hasProperty('artifactory_password') ? artifactory_password : System.getenv('ARTIFACTORY_PASSWORD')) ?: System.getProperty('artifactory.password')) ?: ' '
    github_api_key = ((project.hasProperty('github_api_key') ? github_api_key : System.getenv('GITHUB_KEY')) ?: System.getProperty('github.apikey')) ?: ' '
}

...

github {
    owner = project.org
    repo = project.name
    token = project.github_api_key
    tagName = project.version
    targetCommitish = 'master'
    name = 'v' + project.version
    body = Files.exists(Paths.get('' + projectDir + '/' + releaseNotesFile)) ?
            new File('' + projectDir + '/' + releaseNotesFile).text :
            (Files.exists(Paths.get('' + baseDir + '/' + releaseNotesFile)) ?
                    new File('' + baseDir + '/' + releaseNotesFile).text : '')
    assets = [
            "${buildDir}/libs/${project.name}-${project.version}.jar",
            "${buildDir}/libs/${project.name}-${project.version}-javadoc.jar",
            "${buildDir}/libs/${project.name}-${project.version}-sources.jar"
    ]
}

...

尝试阅读 outputs 属性 构建中用于生成工件的所有任务:

project(':my-sub-project').jar.outputs

另一种选择是使用所有子项目的 archives 配置:

project(':my-sub-project').configurations.archives.allArtifacts