#gradle #nexus
#gradle #nexus
Вопрос:
У меня есть скрипт Gradle, который загружает последний артефакт моментального снимка с сервера Nexus. Он отлично работает с Gradle 5.4, но, похоже, не хочет работать после обновления до Gradle 6.5.
Это содержимое build.gradle:
apply plugin: "java"
repositories {
maven {
url "https://somerepo.com/repository/app-snapshot/"
credentials {
username 'a-user'
password 'a-password'
}
authentication {
basic(BasicAuthentication)
}
}
}
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
configurations {
component
}
dependencies {
component group: "com.bla.ble, name: "component-name", version: "${version}-SNAPSHOT"
}
task copyComponent(type: Copy) {
from configurations.component
into "/some/local/path"
}
Сбой Gradle выглядит следующим образом:
Execution failed for task ':copyWorkflow'.
> Could not resolve all files for configuration ':workflow'.
> Could not find com.bla.ble:component-name:3.2.0-SNAPSHOT.
Searched in the following locations:
- https://somerepo.com/repository/app-snapshot/com/bla/ble/component-name/3.2.0-SNAPSHOT/maven-metadata.xml
- https://somerepo.com/repository/app-snapshot/com/bla/ble/component-name/3.2.0-SNAPSHOT/component-name-3.2.0-20201130.163046-11.pom
Required by:
project :
Я я перехожу к https://somerepo.com/repository/app-snapshot/com/bla/ble/component-name/3.2.0-SNAPSHOT/maven-metadata.xml это предоставляет действительный файл метаданных и указывает на моментальный снимок, который на самом деле имеет действительный файл.
Затем я снова попытался понизить версию до Gradle 5.4 и все прошло нормально. Я также пытался найти какие-либо устаревшие опции в Gradle 6.x, но не смог найти, из-за чего это приводит к сбою.
Ответ №1:
Нашел решение через этот пост: https://discuss.gradle.org/t/how-to-fetch-maven-artifact-without-pom-file-in-gradle-6-0/33836/2
Краткая история: критическое изменение, внесенное в Gradle 6.x, предотвращает загрузку артефактов, если POM отсутствует. Чтобы обойти это требование, в определение maven необходимо добавить следующее:
metadataSources {
artifact()
}
Дополнительная информация: https://docs.gradle.org/current/userguide/upgrading_version_5.html?_ga=2.181891495.1612153887.1606754101-263409462.1606754101#maven_or_ivy_repositories_are_no_longer_queried_for_artifacts_without_metadata_by_default
Комментарии:
1. Я не знаю, почему многие люди не сталкивались с этой проблемой. Это определенно критическое изменение. Этот ответ работает отлично!