【问题标题】:Change version of dependency defined by Graiils更改 Grails 定义的依赖版本
【发布时间】:2020-11-11 00:35:32
【问题描述】:

我们目前正在运行 Grails 3.3.10。我们遇到了包含的 Apache commons-validator 版本的问题。 Grails 3.3.10 似乎使用 1.5.1 版的 commons-validator。

理想情况下,我们只想更新 commons-validator 而不是 Grails,我可以看到最新版本是 1.7。

是否可以覆盖 Grails 包含的版本?

似乎如果我将它包含在我的build.gradlecompile 'commons-validator:commons-validator:1.7' 中,Gradle 将下载它,但只会与 1.5.1 版本一起使用。当我在本地运行我的应用程序时,它仍将使用 1.5.1 版本(通过 IntelliJ 中的断点验证)。

感谢您的帮助。

【问题讨论】:

    标签: gradle grails apache-commons


    【解决方案1】:

    https://github.com/jeffbrown/tyrelhdependency查看项目

    https://github.com/jeffbrown/tyrelhdependency/blob/fb2912ebbac7ef6db2ee9446709248d8c70f50e6/build.gradle#L76

    compile 'commons-validator:commons-validator:1.7'
    

    如果您运行依赖关系报告gradlew dependencyReport,然后检查build/reports/project/dependencies.txt,您将看到commons-validator 已更新到1.7。

    如果您使用gradlew assemble 构建.war file 并检查build/libs/tyrelhdependency-0.1.war,您应该会看到该库只有一个版本。

    【讨论】:

    • 您的项目中可能有一些不寻常的东西需要不同的解决方案。如果您可以共享一个演示两个版本的依赖关系的示例,那么排除故障可能很容易,但我认为该行为需要 Gradle 中的错误或已将问题添加到构建配置中。我的猜测是您的 IDE 配置刚刚过时,这就是您在“错误”jar 中遇到断点的原因。
    • 谢谢,感谢您的意见。问题似乎出在我的本地缓存/IDE 上。当我构建我们的应用程序时,它包含预期的更新包,并且看起来在我们的 preprod 环境中工作正常。
    【解决方案2】:

    根据记忆,我相信您会寻找具有这种依赖性的类:

    grails dependency-report > deprep.txt
    

    然后搜索“commons-validator”。这将告诉您哪些依赖项正在使用它。

    接下来从 build.gradle 文件中的 dependencies (ex) 下删除这些插件的依赖项:

    compile 'org.codehaus.gpars:gpars:1.2.1', {
        exclude group:'org.codehaus.groovy', module: 'groovy-all'
    }
    

    那么...您需要为“commons-validator”添加所需版本的依赖项。

    当然这是凭记忆,所以可能并不完全准确。不过试试看吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 2014-05-21
      • 1970-01-01
      • 2011-07-13
      • 2016-09-18
      相关资源
      最近更新 更多