【问题标题】:How to diff files/folders in Gradle?如何区分 Gradle 中的文件/文件夹?
【发布时间】:2015-08-04 18:08:51
【问题描述】:

我需要在 Gradle 中编写一个脚本,将 2 个文件夹作为输入。 这两个文件夹都包含

编辑:这是一个示例脚本 https://gist.github.com/igormukhin/71d780c4274336eeb297 。唯一的问题是它按时间戳进行比较。

【问题讨论】:

    标签: groovy gradle diff build-process


    【解决方案1】:

    我最近编写了类似于您要求的内容:DirectoryDifferenceCollector;但是,它实际上是比较文件的内容(作为哈希)而不是时间戳。如果适合您的需要,我愿意对其进行更新以接受可配置的策略,或者您可以使用所涉及的概念。

    基本上它会扫描两个目录并确定 A 和 B 中丢失的文件,然后它还会确定两个目录共有的文件,但内容不同。

    结果收集在 DirectoryDifference 对象中,每个类别都有各自的文件路径。

    【讨论】:

    • 太好了,这看起来像我需要的 :) 我需要比较二进制内容,而不仅仅是时间戳。这将是我们的艺术构建管道的一部分,用于生成包含更改/更新的艺术资产的 .zip 文件的脚本。我需要做一些其他的小改动(如果第一个参数目录包含第二个参数不包含的文件,脚本将中止)
    • 由于重构为单级项目,此答案中引用的代码似乎已移动。现在似乎在here
    【解决方案2】:

    我很想使用diff

    def process = 'diff x y'.execute()
    

    然后您可以以文本形式访问命令的输出:

    println process.err.text
    println process.in.text
    

    并通过以下方式获取退出状态:

    int status = process.waitFor()
    

    许多常见的操作系统都会安装diff,但Windows 可能没有。

    【讨论】:

    • 它需要与平台无关,这就是我使用 Gradle 的原因。
    • 奇怪,我现在看的那个版本还是不行。
    猜你喜欢
    • 2015-02-06
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2023-03-15
    • 1970-01-01
    • 2013-12-10
    相关资源
    最近更新 更多