查找远程存储库中是否存在工件

Eld*_*dge 5 java build dependency-management artifactory gradle

如何使用 gradle 检查远程存储库中是否存在工件?

我还没有找到任何可以完成此任务的 gradle 插件。

我有一个想法,在 build.gradle 中创建一个函数来检查存储库的 url 是否存在。但这似乎不是正确的做法。

Boolean ifExists = new URL(url).openConnection().with {
        requestMethod = 'HEAD'
        connect()
        responseCode == 200
}
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激。

Ben*_*ard 1

似乎没有官方 Gradle 插件来支持检查工件是否存在。但是,您应该能够通过在 Java 进程中执行curl 命令来完成此操作:Curl 标志说明:

-I仅标记标头。

-s表示静默模式。(没有程序表或错误消息)

如果您需要对工件资源进行身份验证,您的命令可能与下面的命令略有不同,但我假设您已经在 url 中考虑到了这一点:

String curlCommand= "curl -I -s " + url + " | grep HTTP";
Process process = Runtime.getRuntime().exec(curlCommand);
process.getInputStream();
Run Code Online (Sandbox Code Playgroud)

如果找到您的工件,该过程将打印"HTTP/1.1 200 OK"

否则,"HTTP/1.1 404 Not Found"