如何在Gradle 6.7.1中锁定依赖项?

4

我正在阅读gradle依赖锁定的文档。 我在我的deps.gradle文件中添加了以下咒语,但版本仍然在滑动。

dependencyLocking {
  lockAllConfigurations()
}

我注意到了一个警告:“上述代码将锁定所有项目配置,但不包括构建脚本的配置”,但是我找不到解释这种差异的文档。

有什么区别以及如何锁定所有依赖项?

请注意,我知道另一种似乎可行的锁定依赖项的方法,但它非常冗长,所以如果可能的话,我想避免使用它:

  implementation('com.github.jnr:jffi') {
    version {
       strictly '1.2.23'
    }
  }
1个回答

7
lockAllConfigurations()

只有使所有配置 符合条件 才能进行依赖项锁定。 它不会自动锁定依赖项。否则,动态版本将变得无用,您可以在添加依赖项时指定确切的版本号。

要实际生成依赖项锁定文件,需要在运行任务时向Gradle传递--write-locks,例如:

gradle dependencies --write-locks

请参阅文档的此部分


./gradlew dependencies --write-locks 对于我的多模块项目没有起作用。相反,我不得不定义一个任务来调用所有模块上的 dependencies - Heath Borders
1
当然。Gradle任务在当前项目上下文中执行,在多模块构建中,每个子模块中的任务都必须加前缀才能直接调用。如果你阅读文档,文档从未说过dependencies是锁定依赖项的任务。任何导致依赖关系解析的任务都可以完成此任务。如果您有一个多模块构建,则任何导致所有模块的依赖关系解析的任务都可以工作(例如尝试构建)。 - Xinchao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接