¿Cómo verifico si existe un artefacto en un repositorio remoto usando gradle?
No he podido encontrar ningún complemento para gradle que logre esto.
Tuve la idea de crear una función en build.gradle que verifique si existe la URL del repositorio. Pero esta no parece la forma correcta de hacerlo.
Boolean ifExists = new URL(url).openConnection().with { requestMethod = 'HEAD' connect() responseCode == 200 }Cualquier sugerencia sería muy apreciada.
Con Kotlin DSL, puede verificar si el artefacto existe en alguno de los repositorios registrados de la siguiente manera:
import com.github.kittinunf.fuel.httpGet buildscript { dependencies { "classpath"("com.github.kittinunf.fuel:fuel:2.3.1") // you may use any other HTTP-client if you want } } tasks { register("checkDependencies") { doFirst { project.configurations["implementation"].dependencies.forEach { dependency -> project.repositories.forEach { repository -> val repositoryURL = (repository as MavenArtifactRepository).url val artifactURL = "$repositoryURL${dependency.group?.replace('.', '/')}/${dependency.name}/${dependency.version}/${dependency.name}-${dependency.version}.jar" val (_, response, _) = artifactURL.httpGet().response() println("$dependency: ${response.statusCode}") } } } } }No parece que haya un complemento oficial de Gradle para admitir la verificación de la existencia de un artefacto. Sin embargo, debería poder lograr esto ejecutando un comando curl en un proceso Java: explicación de las banderas Curl:
-Marco solo para encabezados.
-s para el modo silencioso. (Sin medidor de programa ni mensajes de error)
Su comando puede verse ligeramente diferente al que se muestra a continuación si necesita autenticarse en el recurso del artefacto, pero asumo que ya lo ha tenido en cuenta en su URL:
String curlCommand= "curl -I -s " + url + " | grep HTTP"; Process process = Runtime.getRuntime().exec(curlCommand); process.getInputStream(); Si se encuentra su artefacto, el proceso imprimirá "HTTP/1.1 200 OK"
De lo contrario, "HTTP/1.1 404 Not Found"
no estoy seguro si esto ayuda, https://github.com/ben-manes/gradle-versions-plugin . puede volver a cablear para especificar las versiones inestables que le gustaría descartar.
o fuerce esto mirando siempre las últimas versiones https://github.com/patrikerdes/gradle-use-latest-versions-plugin