>我想介绍一下我的github动作,gradle依赖性-diff-action。通过这个操作,你可以很容易地检查gradle的依赖性是如何因为拉请求而改变的。>
动机 因为gradle可以更固定地解决库的依赖性问题,所以有时会出现无意的依赖性变化。例如,假设您更新了一个名为tink的图书馆,如下所示。乍一看,它看起来只是一个小的更新。当您通过此类更改获得拉动请求时,您可能会很快批准它,假设没有问题。
>
dependencies { - implementation("com.google.crypto.tink:tink:1.13.0") + implementation("com.google.crypto.tink:tink:1.14.0") implementation("com.google.protobuf:protobuf-java:3.25.1") }
但丁克实际上取决于protobuf-java,由于此更新,依赖变化如下: protobuf-java悄然从3.25.1升至4.27.0。在gradle中,当依赖版本发生冲突时,它基本上会使用最新版本。>
-+--- com.google.crypto.tink:tink:1.13.0 ++--- com.google.crypto.tink:tink:1.14.0 | +--- com.google.code.findbugs:jsr305:3.0.2 | +--- com.google.code.gson:gson:2.10.1 | +--- com.google.errorprone:error_prone_annotations:2.22.0 -| --- com.google.protobuf:protobuf-java:3.25.1 ---- com.google.protobuf:protobuf-java:3.25.1 +| --- com.google.protobuf:protobuf-java:4.27.0 +--- com.google.protobuf:protobuf-java:3.25.1 -> 4.27.0
这样,“隐藏的差异”就可以通过查看“拉动请求中的代码差异”来看到。。 我创造了gradle依赖性-diff-action可视化这些隐藏的差异。
>
旁注1事实上,有一个错误涉及protobuf-java 3.x和4.x之间的向后不兼容。结果,很多人在上述例子等情况下都遇到了问题。
- >
- 旁注2 https://github.com/tink-crypto/tink-java/issues/31 >最近,gradle引入了一些名为“依赖关系锁”的东西,有点像npm中的包装锁。然而,它似乎不太受欢迎。我自己也试过。我觉得有点不方便。。(我不会在这里详细介绍的。
-
-
什么是gradle依赖?-diff-action?
- 本操作解决了以下拉动请求描述的问题:>
检测由拉动请求引起的gradle依赖关系的任何差异。
>请求向拉发表评论
- >向拉要求添加标签
- >github动作伪像将依赖性差异上传到文本和html格式中
应用项目报告插件
>
plugins { //... `project-report` // here ! }
写一个工作流程 首先,试着写下面的工作流程。很容易开始。>
name: CI on: pull_request: jobs: dependencies-diff: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: distribution: temurin java-version: 17 - uses: be-hase/gradle-dependency-diff-action@v1
如何获得依赖项的差异? 简而言之,通过应用项目报告插件,我们可以使用依赖项目报告任务。我们在基本分支和当前分支上运行此任务,然后删除输出差异。
使用依赖性树木使diff更容易理解。 从技术上讲,我们本可以使用现有的依赖任务,而不是依赖关系任务。然而,依赖项目任务不支持多个项目设置,这意味着我们必须按顺序运行每个子标记,这将需要很多时间。我们选择使用它,因为我们依赖项目奖励任务来支持多个项目设置。> 概括>我们介绍了gradle的依赖性 - 差异 - github动作,可视化gradle依赖性的意外变化。
>有时会发生意想不到的版本更新,这可能会导致严重的问题。通过使用此操作,您可以很容易地检查每个拉请求中的依赖差异,这将有助于评论。 请试试!>
以上是可视化gradle依赖的差异!介绍“ gradle依赖性-diff-action详情请关注图灵教育的其他相关文章!
