gradle - 如何分析传递依赖是否设置为 "changing"?

标签 gradle dependencies

目前,我的依赖项的行为存在问题。似乎并非所有依赖项都被标记为需要的“更改”。我尝试使用 build.gradle 脚本验证这一点。对于直接依赖项,检查很简单。

configurations.all {
  incoming.beforeResolve {
    it.dependencies.each { dep ->
      if ( dep.getVersion()?.endsWith( '-SNAPSHOT' ) ) {
        println dep
        println dep.isChanging()
      }
    }
  }
}

通过这种方式,我注意到例如 SNAPSHOT 没有标记为“更改”。现在我不确定传递依赖的行为方式。但是我无法通过在解析之前访问 API 来获得传递依赖项。

使用 gradle 参数 '--refresh-dependencies' 不是选项(但有效)。但是对于我们的驻外办事处,使用此参数的延迟非常高。有时,每次构建需要几分钟。

最佳答案

问题前段时间解决了。我认为问题出在 gradle 依赖描述符管理中。

大多数情况下是什么解决了问题?

allprojects {
  configurations.all {
    incoming.beforeResolve {
      it.dependencies.each { dep ->
        if ( dep.getVersion()?.endsWith( '-SNAPSHOT' ) ) {
          if ( dep.metaClass.respondsTo( 'setChanging', Boolean ) ) {
            dep.setChanging( true )
          }
        }
      }
    }

    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
  }
}

另一方面,有时问题仍然存在。但随后出现了一个问题,即 gradle 缓存目录中的描述符未正确更新(可能与工件的计算哈希值相同)。

每月少于 1 到 3 次删除依赖项描述 rune 件夹,同时拥有约 100 名开发人员似乎可以处理。

关于gradle - 如何分析传递依赖是否设置为 "changing"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34061304/

相关文章:

dependencies - 缺少 Atmosphere 和 Jersey 的依赖项

java - gradle:通过(文件)循环调用java插件

gradle - 包 ratpack.test 不存在

android - Android Studio中的 list 错误

java - 生成项目时,如何有条件地从原型(prototype)中包含或排除文件?

java - maven 从无处获得 ./m2/repository 中的旧 junit 依赖项

dependencies - typescript 中有没有什么好的静态代码分析工具?

maven - 为将在 tomcat 中运行的 Web 应用程序提供范围 "provided"的依赖项

gradle - 在一个任务中调用多个gradle任务

java - 由 : java. lang.ClassNotFoundException : org. apache.commons.io.FileUtils 引起