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

约束在Gradle依赖项解析中有什么用?

平光明
2023-03-14

有一个库,即io.github.elye: simplekotlinLibrary,版本1.0.0, 2.0.0和3.0.0。

io。github。elye:easyandroidlibrary:1.0.0包含io。github。elye:simplekotlinlibrary:1.0.0

io。github。elye:simpleandroidlibrary:2.0.0包含io。github。elye:simplekotlinlibrary:2.0.0

所以在我的Gradle里,如果我有

    implementation ('io.github.elye:easyandroidlibrary:1.0.0')
    implementation ('io.github.elye:simpleandroidlibrary:2.0.0')
    implementation ('io.github.elye:simplekotlinlibrary:3.0.0')

它将自动解析为项目的io.github.elye: simplekotlinLibrary: 3.0.0,包括传递依赖项。

但是,对于https://docs.gradle.org/current/userguide/dependency_constraints.html#sec: adding-约束-传递-deps,它声明约束还强制将依赖项升级到指定的版本3.0.0

    implementation ('io.github.elye:easyandroidlibrary:1.0.0')
    implementation ('io.github.elye:simpleandroidlibrary:2.0.0')
    implementation ('io.github.elye:simplekotlinlibrary')

    constraints {
        implementation('io.github.elye:simplekotlinlibrary:3.0.0') {
            because 'testing force upgrade'
        }
    }

根据我的理解,以上两个例子将产生相同的结果。似乎约束没有实际用途?约束与差异自相关性解决方案有何不同?

共有1个答案

王君墨
2023-03-14

我认为在上面的例子中,它们是相同的。

但是,如果顶级项目不需要io。github。elye:simplekotlinlibrary,使用约束,仍然可以强制所有可传递依赖项至少达到约束所指示的版本,如下所示。

    implementation ('io.github.elye:easyandroidlibrary:1.0.0')
    implementation ('io.github.elye:simpleandroidlibrary:2.0.0')

    constraints {
        implementation('io.github.elye:simplekotlinlibrary:3.0.0') {
            because 'testing force upgrade'
        }
    }

可在此处找到进一步的详细说明

 类似资料:
  • 虽然我看到两个不同的帖子与此错误消息没有任何关系: 错误:(25,17)无法解析:org.mockito:mockito-core:1.10.19 我尝试使用compile、androidTestCompile和testCompile更改Mockito依赖项,并在全局Gradle文件中尝试添加Maven作为存储库,但没有成功。 编辑:我正在使用Android Studio 2.1 这是我的应用程序

  • 在使用Gradle构建的一个简单的Spring Java项目中,我使用io.Spring.dependency-management应用BOM,该BOM应该在全局指定依赖版本。 现在在BOM中,我已经覆盖了jackson-databind(2.9.5)的默认版本,从Spring Boot2.0.2.Release到2.9.10.4版本。 我在dependencyManagement部分指定了这个B

  • 失败:生成失败,出现异常。 > 出错原因:任务“:compiledebug”执行失败。 找不到系统Java编译器。确保您已经安装了JDK(而不仅仅是JRE),并将JAVA_HOME系统变量配置为指向fight目录。 编辑3: 再一次,Android Studio在编译我的项目时失败了。现在它停在。当我尝试用gradle通过命令行编译时,它没有任何错误...天哪,我恨格雷德尔!

  • 最近,我更新了Android Studio和 SDK。在重建我的应用程序项目时,我遇到以下错误... > < li> 哪里出错:配置项目时出现问题:app。 无法解析配置“:app:_debugCompile”的所有依赖项。找不到技术支持:appcompat-v7:23.0.0.在以下位置搜索:https://jcenter.bintray.com/com/android/support/appc

  • 问题是gradle找不到依赖项的jar,但gradle找错了地方。Gradle一直在错误的目录(谷歌和Android支持libary的目录)中搜索文件.... 在以下位置搜索:文件:/d://programme/androis-sdks/extras/android/m2repository/org/springframework/android/spring-android-rest-templ