首页 > 图灵资讯 > 技术篇>正文

可视化gradle依赖差异!引入“ gradle依赖性-diff-action”

2025-02-13 16:45:48

>我想介绍一下我的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检查中的差异

>请求向拉发表评论
  • >向拉要求添加标签
  • >github动作伪像将依赖性差异上传到文本和html格式中
  • 如何使用

应用项目报告插件 ss1

>将项目报告插件应用于检测依赖性差异的项目。

> ss2

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详情请关注图灵教育的其他相关文章!

上一篇 循环
下一篇 返回列表

文章素材均来源于网络,如有侵权,请联系管理员删除。