当前位置: 首页 > 知识库问答 >
问题:

Gradle不尊重强制依赖版本

厍胤运
2023-03-14

我无法使用Gradle强制生成依赖项的版本。我的目标是使用0.20.0版本。发布了Spring HATEOAS库的,但尽管我付出了所有的努力,它仍然解析为0.19.0。释放。

我尝试了许多策略,包括孤立的策略和相互结合的策略。这些策略包括但可能不限于以下策略(请注意,在所有情况下$springHateoasVersion都在gradle.properties文件中定义,该文件位于声明Spring HATEOAS依赖项的模块目录的父目录中):

#1(在声明依赖关系的模块的build.gradle文件中)

apply plugin: 'io.spring.dependency-management'

dependencyManagement {
    dependencies {
        dependency group:'org.springframework.hateoas', name:'spring-hateoas', version:"$springHateoasVersion"
    }
}

#2(在声明依赖关系的模块的build.gradle文件中)

compile ("org.springframework.hateoas:spring-hateoas:$springHateoasVersion") { force = true }

#3(在父目录的build.gradle文件中)

subprojects {
    configurations.all {
        resolutionStrategy {
            force "org.springframework.hateoas:spring-hateoas:$springHateoasVersion"
        }
    }
}

我已经尽我所能研究这个问题:

这个问题有一个公认的答案,但似乎与我正在经历的问题并不完全匹配:如何强制Gradle为两个依赖项设置相同的版本?

这两个问题似乎都没有得到公认的答案:1)Gradle没有尊重resolutionStrategy。强制,2)强制模块版本对生成的组织没有影响。日食wst。常见的组成部分

除了我的项目被破坏之外(因为我使用了错误的Spring HATEOAS版本),我可以清楚地看到Gradle“有意识地”选择了错误的依赖版本,尽管我有这么多的声明。当我运行<代码>时/gradlew dependencyInsight——dependency spring hateoas,我看到了以下输出:

org.springframework.hateoas:spring-hateoas:0.19.0.RELEASE (selected by rule)

org.springframework.hateoas:spring-hateoas:0.20.0.RELEASE -> 0.19.0.RELEASE
\--- project :Commons
     \--- compile

尽管有这个名称,但dependencyInsight任务对于是哪条规则导致Gradle选择了不合适的依赖关系版本提供了令人惊讶的信息,更不用说我如何绕过该规则了。

共有1个答案

潘嘉颖
2023-03-14

我在这里找到了这个问题的解决方案。当然,这是我没有尝试的一件事,因为它“看起来不重要”-/

为了使事情正常工作,我在构建中添加了以下内容。父目录的gradle文件(相对于声明对Spring HATEOAS的依赖关系的模块的目录)。

subprojects {
    apply plugin: 'io.spring.dependency-management'

    dependencyManagement {
        applyMavenExclusions false
    }

    ext['spring-hateoas.version'] = "$springHateoasVersion"
}
 类似资料:
  • “DepProject”是一个Maven项目,在该项目的pom文件中,它依赖于另一个工件: 现在,当我对我的项目执行“gradle dependencies”时,它正确地表明我应该通过传递依赖项解析获得solrj依赖项,但它不尊重4.4.0版本声明,相反,我的项目获得了5.5.4版本的依赖项。 这些行在依赖关系报告中出现几次,始终相同。 然后在结果的“gradle dependencies”调用中

  • 我与传递依赖有冲突。压倒一切、排除或强迫都无济于事。我还能做什么来把正确版本的库放入罐子?完整的代码dan be。发现https://github.com/geoHeil/gradle-dependency-resolution但它的主要部分描述如下。 正在执行 禁用geomesa依赖项(拉入过时版本的typesafe/lightbend配置库)时: 执行jar 输出 启用依赖项时: 它失败了 这

  • 渐变-泊坞插件和Spring靴版本 2.0.0.M4 M4 使用较新的客户端,并且使用 docker 插件以异常结尾,存在一个问题: 我的主项目中的构建脚本: 如您所见,我们加载spring-boot-gradle-plugin version=2.0.0。M4及其所有依赖项。 我的子项目构建:gradle: 最重要的是,docker.gradle文件与子项目的build.gradle文件位于同一

  • 问题内容: 我使用以下两个依赖项: 两者必须为同一版本才能正常工作。由于我的其他依赖项使用更高的版本,因此Gradle为每个依赖项使用不同的版本。 我通过运行发现了这一点: 如何强制Gradle为这两个依赖项设置相同的版本? 问题答案: 您的依赖项之一是强制更新番石榴版本。使用以定位库驱逐你的版本。 您遇到的问题是,如果您强迫它使用14.0.1,则另一个库可能无法正常工作。您是否可以仅使用17.0

  • 我使用以下两个依赖项: 两者必须是相同的版本才能正常工作。由于我的其他依赖项使用更高的版本,Gradle为每个依赖项使用不同的版本。 我通过运行找到了这一点: 如何强制Gradle为这两个依赖项设置相同的版本?

  • 在php 5.1中, 扩展之间的内部依赖是可以强制性的. 由于扩展可以静态构建到php中, 也可以构建为共享对象动态加载, 因此强制依赖需要在两个地方实现. 配置时模块依赖 第一个位置是你在本章课程中刚刚看到的config.m4文件中. 你可以使用PHP_ADD_EXTENSION_DEP(extname, depname[ , optional])宏标识extname这个扩展依赖于depname