无法解析配置“:配置文件”的所有依赖项

Could not resolve all dependencies for configuration ':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

我尝试了 运行ning gradle dependencies 但这似乎并没有告诉我什么是错的。

我还能做些什么来解决这个问题?

编辑: 仔细观察后,我在 gradle dependencies 输出中注意到了这一点:

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

这似乎是因为我的 build.gradle:

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

但是当我创建一个全新的 grails 3.2.2 应用程序时,该行也在那里,但一切正常。

我还能检查什么?

编辑: 我将一个新的 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?

作为解决方法,在我的 build.gradle 文件中,我在 Web 配置文件依赖项行的末尾添加了一个明确的版本号 3.2.1。这是 Grails 3.2.2 应该默认使用的版本。我仍然不确定为什么在未指定的情况下引入版本 3.2.2。

profile "org.grails.profiles:web:3.2.1"

我知道自该线程处于活动状态以来已经有一段时间了,但我想我可以 post 我的解决方案可能会帮助其他人解决这个问题。

我在 IntelliJ Idea 中使用 Grails 3.3.3 时遇到了同样的问题。

为了解决这个问题,我在 build.gradle 的依赖项列表中更改了要编译的配置文件。这导致 rest-api 的文件被下载。然后我将编译改回配置文件,因为它应该是。

运行 gradle 依赖关系显示 rest-api 配置文件

的以下内容
profile

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

而不是我之前遇到的 FAILED

如果您的项目使用 java 7,您可以这样做: - 用 java 8 编译你的项目 - 然后 运行 你的项目 java 7

(这对我有用)

最近我遇到了这个问题,因为 repo.grails.org (Sectigo Limited) 使用的 CA 不在 Java cacerts 中。这导致无法下载网络配置文件 jar (https://repo.grails.org/grails/core/org/grails/profiles/web/4.0.0/web-4.0.0.jar)。

解决方案是在 cacerts 中导入 Sentco root ca 证书。 我为我的项目使用了一个单独的 cacert,所以我导入了它,但是对于那些想要在 Java 级别导入的人,他们需要导入默认的 cacert (${JAVA_HOME}/jre/lib/security/cacerts)使用密码 'changeit'.