java - 无法解析配置 X 的所有依赖项,无法找到 B > A 所需的 Z

标签 java jakarta-ee groovy gradle

我已经解决了这个问题,但我仍然很好奇为什么 gradle 会这样。

在我的 gradle 项目中,我有 2 个 gradle 项目,一个使用 ear 插件配置的命名应用程序和一个部署在 Ear 的 lib 文件夹中的命名核心

我在尝试构建我的 gradle 项目时遇到以下错误:

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':app:earlib'.
> Could not find org.slf4j:slf4j-api:1.7.5.
  Required by:
      saturn:app:unspecified > saturn:core:unspecified
> Could not find commons-io:commons-io:2.4.
  Required by:
      saturn:app:unspecified > saturn:core:unspecified
> Could not find org.slf4j:slf4j-log4j12:1.7.5.
  Required by:
      saturn:app:unspecified > saturn:core:unspecified
> Could not find log4j:log4j:1.2.17.
  Required by:
      saturn:app:unspecified > saturn:core:unspecified

我的应用程序 build.gradle 文件是:

apply plugin: 'ear'

dependencies {
    earlib project(":core")
}

我的核心 build.gradle 是:

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.5'
    runtime 'org.slf4j:slf4j-log4j12:1.7.5'
    runtime 'log4j:log4j:1.2.17'
    testCompile 'junit:junit:4.11'
}

临时解决方案:

我能够通过将 mavenCentral 存储库添加到我的应用程序 build.gradle 来解决该问题,如下所示:

apply plugin: 'ear'

repositories {
    mavenCentral()
}

dependencies {
    earlib project(':core')
}

但是我仍然很好奇为什么依赖项目需要知道核心项目从哪个存储库解析其依赖项。这个document on dependency management似乎没有很好的解释。

最佳答案

解析配置时,Gradle(仅)使用在同一项目中声明的存储库作为配置。因此,在解析ear项目的earlib配置时,仅考虑ear项目的存储库。这就是为什么通常在根构建脚本中的 subprojects 下声明所有存储库的原因之一。

关于java - 无法解析配置 X 的所有依赖项,无法找到 B > A 所需的 Z,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21177218/

相关文章:

java - 模拟方法未返回预期结果

java - 使用 Xpath 提取属性

java - 计算一个数的最大余数

java - Java 1.8的Gradle 1.7:compileGroovy错误?

gradle - 如何防止Gradle降级依赖项?

jenkins - 将 Jenkins 管道阶段显示为失败,但不会导致整个作业失败

java - 查找数组中两个数字的总和是否等于 k

java - 我可以在 oracle 随 java SE JDK 提供的默认 JRE 上运行 Java EE 程序吗?

Hibernate 在更新父实体的同时更新子实体

java - JAXB 是否支持 xsd :restriction?