Не удалось разрешить все зависимости для конфигурации ':profile'

Я пытаюсь обновить Grails 3.1.5 до 3.2.2.

Когда я запускаю grails --debug --stacktrace run-app, я получаю следующий вывод:

$ grails --debug --stacktrace run-app
|Resolving Dependencies. Please wait...

CONFIGURE SUCCESSFUL

Total time: 5.028 secs
Error |
Could not resolve all dependencies for configuration ':profile'. Type 'gradle dependencies' for more information

Я попытался запустить gradle dependencies, но, похоже, это ничего не говорит мне о том, что не так.

Что еще я могу сделать, чтобы устранить эту проблему?

EDIT: Присмотревшись повнимательнее, я заметил это в выводе gradle dependencies:

profile
\--- org.grails.profiles:web: -> 3.2.2 FAILED

Кажется, это связано со строкой в ​​моем build.gradle:

dependencies {
    profile "org.grails.profiles:web"

Но когда я создаю новое приложение Grails 3.2.2, эта строка тоже присутствует, но все работает нормально.

Что еще я могу проверить?

EDIT: я сравнил новое приложение Grails 3.2.2 со своим приложением без указания версии для зависимости profiles.

Для обоих в журнале gradle dependencies --debug вижу:

[io.spring.gradle.dependencymanagement.VersionConfiguringAction]
Using version '3.2.1' for dependency 'org.grails.profiles:web:'

Следующая строка с новым приложением:

[org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder]
Selecting new module version org.grails.profiles:web:3.2.1

Но с моим приложением:

[org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder]
Selecting new module version org.grails.profiles:web:3.2.2

Так почему же в случае с моим приложением он переключился на 3.2.2?


person GreenGiant    schedule 11.11.2016    source источник
comment
Я только что обновил свой jdk 8 до последней версии, и он отлично работает.   -  person ricardogobbo    schedule 19.06.2020


Ответы (4)


В качестве обходного пути в моем файле build.gradle я добавил явный номер версии 3.2.1 в конец строки зависимостей веб-профиля. Это версия, которую Grails 3.2.2 должен использовать по умолчанию. Я до сих пор не уверен, почему он загружает версию 3.2.2, если она не указана.

profile "org.grails.profiles:web:3.2.1"
person GreenGiant    schedule 12.11.2016
comment
Это действительно не очень хорошая идея. Вы должны создать новый проект с 3.2.2 и сравнить его build.gradle с проектом в обновленном проекте. Я предполагаю, что там есть несовместимость. - person Jeff Scott Brown; 13.11.2016
comment
См. github.com/erichelgeson/grails-versions/compare. /3.1.5...3.2.2 - person Jeff Scott Brown; 13.11.2016
comment
Привет Джефф. Я пытался сделать именно это - новый проект 3.2.2 и сравнение различий. Я не мог найти ничего, что должно было быть причиной проблемы. ... Есть ли что-то еще, на что я могу обратить внимание, чтобы устранить эту проблему? Я в тупике, кроме исправления, которое я даю здесь. - person GreenGiant; 14.11.2016
comment
Если вы можете поделиться ссылкой на проект, демонстрирующий проблему, это, вероятно, будет тривиально для устранения неполадок. - person Jeff Scott Brown; 14.11.2016
comment
Если я поменяю версию на 3.2.1, то все работает. Когда я меняю его на 3.2.2, он больше не работает. ... Чем отличаются эти две версии этой зависимости? Есть ли способ увидеть больше информации о том, почему зависимость не удалась? gradle dependencies просто говорит FAILED, а работа с --debug --stacktrace не предоставляет никакой дополнительной информации. - person GreenGiant; 14.11.2016
comment
Хорошо, вот информация об ошибке (посмотрел вывод зависимостей Grails с --debug on): [org.gradle.internal.resource.transport.http.HttpClientHelper] Resource missing. [HTTP GET: https://repo.grails.org/grails/core/org/grails/profiles/web/3.2.2/web-3.2.2.pom] - попробуйте перейти по этому URL-адресу - он говорит, что не удалось найти ресурс - person GreenGiant; 14.11.2016
comment
Изменение 3.2.1 на 3.2.2 в этом URL-адресе позволяет успешно загрузить этот файл. Поэтому мне интересно, почему этот артефакт не был правильно развернут в репозитории Grails? - person GreenGiant; 14.11.2016
comment
Для 3.2.2 у вас должно быть profile "org.grails.profiles:web" без номера версии. - person Jeff Scott Brown; 14.11.2016
comment
Нет 3.2.2 веб-профиля. Версии профилей теперь не зависят от выпусков Grails. - person Jeff Scott Brown; 14.11.2016
comment
Если вы запросите поле по адресу repo.grails.org/grails/core/org/grails/grails-bom/3.2.2/ вы увидите, что Grails 3.2.2 по умолчанию использует веб-профиль версии 3.2.1, но обычно вы не должны выражать зависимость от этой конкретной версии. Вы должны выбрать тот, который Grails хочет использовать по умолчанию на данном этапе. - person Jeff Scott Brown; 14.11.2016
comment
Только что попробовал со свежим приложением Grails 3.2.2 и воспроизвел ошибку, если я явно укажу версию для зависимости профиля, но она работает, если я ее опускаю. ... Похоже, что если версия не указана, используется 3.2.1. - person GreenGiant; 14.11.2016
comment
Похоже, что если версия не указана, используется 3.2.1. - Это правильно, и это ожидаемо. - person Jeff Scott Brown; 14.11.2016
comment
См. мой комментарий выше, который ссылается на версию 3.2.2. - person Jeff Scott Brown; 14.11.2016
comment
profile org.grails.profiles:web:3.2.1 — возможно, вы действительно не хотите этого делать. Лучше использовать версию, предложенную в спецификации, которая также является 3.2.1, но жесткое кодирование версии 3.2.1 в вашем файле сборки может привести к проблемам в будущем. Я бы оставил номер версии выключенным. Непонятно, что еще не так в вашей сборке, что мешает этому работать, но я бы преследовал это, а не жестко кодировал 3.2.1. Как я уже сказал, если вы можете поделиться проектом, демонстрирующим проблему, устранение неполадок будет тривиальным. - person Jeff Scott Brown; 14.11.2016
comment
Хорошо, я тоже. Я понятия не имею, где еще искать. Я сравнил все зависимости между моим приложением и новым и не могу найти ничего, что заставляет это происходить. Я оставил комментарий, чтобы мы могли исправить это при следующем обновлении Grails. Спасибо за вашу помощь. - person GreenGiant; 14.11.2016
comment
Спасибо, несмотря на информацию, предоставленную Джеффом, мне также пришлось использовать этот обходной путь, чтобы решить проблему зависимости профиля. - person Raymond Holguin; 17.02.2017

Я знаю, что прошло некоторое время с тех пор, как поток был активен, но я подумал, что могу опубликовать свое решение здесь, чтобы, возможно, помочь другим с этой проблемой.

У меня была такая же проблема с Grails 3.3.3 в IntelliJ Idea.

Чтобы решить эту проблему, я изменил профиль для компиляции в списке зависимостей build.gradle. Это привело к загрузке файла для rest-api. Затем я изменил компиляцию обратно на профиль, как и должно быть.

запуск зависимостей gradle показывает следующее для профиля rest-api

profile

--- org.grails.profiles:rest-api: -> 3.3.2 --- org.grails.profiles:base:3.3.1

а не FAILED, который я получал раньше

person Graham H    schedule 19.03.2018

Если вы используете java 7 для своего проекта, вы можете сделать это: - скомпилируйте свой проект с java 8 - затем запустите свой проект с java 7

(это работает для меня)

person Etienne    schedule 13.02.2019

Недавно я столкнулся с этой проблемой, потому что CA, используемый repo.grails.org (Sectigo Limited), не был в Java cacerts. Это привело к сбою загрузки jar-файла веб-профиля (https://repo.grails.org/grails/core/org/grails/profiles/web/4.0.0/web-4.0.0.jar).

Решение состояло в том, чтобы импортировать корневой сертификат Sentco в cacerts. Я использую отдельный cacert для своего проекта, поэтому я импортировал в него, но тем, кто хочет импортировать на уровне Java, им нужно импортировать в cacert по умолчанию (${JAVA_HOME}/jre/lib/security/cacerts), используя пароль «changeit» .

person Krishna    schedule 23.11.2020