如何调用Gradle';如何手动搜索存储库?

如何调用Gradle';如何手动搜索存储库?,gradle,Gradle,作为构建发布版本的先决条件,比如说acme-widgets-1.0,我想搜索配置的存储库(或特定的存储库),以确保acme-widgets-1.0.jar尚未发布。我怎么能和Gradle这样做?或者,是否有方法为特定版本配置不存在的依赖项 group = 'com.acme' version = '1.0' repositories { jcenter() } if (gradle.startParameter.taskNames.contains("release")) {

作为构建发布版本的先决条件,比如说
acme-widgets-1.0
,我想搜索配置的存储库(或特定的存储库),以确保
acme-widgets-1.0.jar
尚未发布。我怎么能和Gradle这样做?或者,是否有方法为特定版本配置不存在的依赖项

group = 'com.acme'
version = '1.0'

repositories {
    jcenter()
}

if (gradle.startParameter.taskNames.contains("release")) {
    def taskNames = gradle.startParameter.taskNames
    taskNames.add(0, "checkReleaseDoesntExist")
    gradle.startParameter.taskNames = taskNames
}

task checkReleaseDoesntExist() {
}

task release() {
    println "Building release"
}

checkReleaseDoesntExist.doLast {
    println "Checking repositories to make sure release hasn't already been built"
    // TODO What do I do here?
}

您可以声明一个配置,其中只包含您试图查看其是否已发布的工件。 解析此配置后,您将拥有一个空文件集,或者没有

因此,大致如下:

configurations {
    checkRelease { transitive = false }
}
dependency {
    checkRelease "$group:$name:$version"
}

task ('checkReleaseDoesntExist') {
    doLast {
        println "Checking repositories to make sure release hasn't already been built"
        try {
            if (!configurations.checkRelease.files.isEmpty()) {
                // already exists
            }
        }
        catch (ResolveException e) {
            // doesn't exist
        }
}

例如,您可以建立HTTP连接以获取工件,如果成功,则表示该工件已经发布。例如: