当前位置: 首页 > 面试题库 >

如何强制Gradle为两个依赖项设置相同的版本?

汝昀
2023-03-14
问题内容

我使用以下两个依赖项:

compile 'com.google.guava:guava:14.0.1'
compile 'com.google.guava:guava-gwt:14.0.1'

两者必须为同一版本才能正常工作。由于我的其他依赖项使用更高的版本,因此Gradle为每个依赖项使用不同的版本。

我通过运行发现了这一点gradle dependencies

compile - Compile classpath for source set 'main'.
+--- com.google.guava:guava:14.0.1 -> 17.0
+--- com.google.guava:guava-gwt:14.0.1
|    +--- com.google.code.findbugs:jsr305:1.3.9
|    \--- com.google.guava:guava:14.0.1 -> 17.0

如何强制Gradle为这两个依赖项设置相同的版本?


问题答案:

您的依赖项之一是强制更新番石榴版本。使用gradle dependencies以定位库驱逐你的版本。

您遇到的问题是,如果您强迫它使用14.0.1,则另一个库可能无法正常工作。您是否可以仅使用17.0版本作为依赖项?

我不是在build.gradle中维护单个版本号,而是使用dependencies.gradle文件,该文件将具有版本号的映射并将其拉入build.gradle。这样,我只需要维护单个番石榴版本。因此,您的示例将是:

Dependencies.gradle

ext {
    ver = [
        guava: '14.0.1'
    ]
}

然后在build.gradlehtml" target="_blank">文件中,您可以拥有:

apply from: "dependencies.gradle"

dependencies {
    compile group: 'com.google.guava', module: 'guava', version: ver.guava
    compile group: 'com.google.guava', module: 'guava-gwt', version: ver.guava
}

然后,当我想移至17.0时,我只需要更改dependencies.gradle。

我也是通过以下方式将可传递依赖项设置为false的绝对支持者

configurations.compile { transitive = false }

这样,即使退出库不是完全向后兼容的,尽管在运行时可能会出现问题,但是在编译时不会退出某些依赖项。面对现实吧,如果您正在编写代码,则应该了解所使用的库,并且应该清楚了解自己的依赖项。它可以保护您免受依赖性升级和混乱困扰之一。



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

  • 问题内容: 我正在为Java中的ERP系统进行定制。在我的定制中,我想使用Apache POI 3.10.1。因此,我集成了jars poi-3.10.1-20140818.jar和poi-ooxml-3.10.1-20140818.jar。 但是,这些jar包含几个类,这些类已经包含在ERP系统的核心代码中,但是有所不同。 如果核心ERP类覆盖POI类,则定制将引发运行时异常。如果POI类覆盖核

  • 我无法使用Gradle强制生成依赖项的版本。我的目标是使用0.20.0版本。发布了Spring HATEOAS库的,但尽管我付出了所有的努力,它仍然解析为0.19.0。释放。 我尝试了许多策略,包括孤立的策略和相互结合的策略。这些策略包括但可能不限于以下策略(请注意,在所有情况下都在文件中定义,该文件位于声明Spring HATEOAS依赖项的模块目录的父目录中): #1(在声明依赖关系的模块的b

  • 但是我有两种回购方式 如何创建两个bean,其中一个是用注入的,另一个是用注入的?

  • 问题内容: 我有一个项目,其中两个依赖项使用同一库的不同版本。例如,我的项目具有dependency 和dependency 。和都使用通用的库/依赖项,但版本不同。拥有的版本和具有的版本。所以,现在当我添加和在我的项目依赖,有2个版本,在我的项目的。 我期望在运行时由和引用各个版本。但事实并非如此。不知怎的,当我在我的项目运行测试时,使用的,最好应使用(因为在中,明确指定/加)。所以,它打破了执

  • 问题内容: 我刚刚遇到了一个案例,即我的Maven项目有两个直接依赖项,其中有两个不同版本的特定传递性依赖项。 在我的特殊情况下,我直接依赖以下内容: 和 这两个依赖项都对com.sun.jersey:jersey- core具有(较深)的传递性依赖关系,但是每个都有不同的版本。Maven并没有失败,甚至没有警告(或者,如果没有,我从来没有看到过!)正在发生这样的事情……因此,直到调试了球衣版本时