【问题标题】:Ant / checksum: How to generate one .md5 file for several files (resulting in md5-file with multiple lines)Ant / checksum:如何为多个文件生成一个 .md5 文件(导致 md5-file 多行)
【发布时间】:2015-04-07 17:13:26
【问题描述】:

是否可以让 Ant 为包括子目录在内的多个文件生成一个 .md5 文件,从而生成一个包含多行的单个 md5 文件(每行包含一个校验和和文件名及其相对路径)?

过去,我只对单个文件使用 Ant 校验和任务:

<checksum algorithm="md5" format="MD5SUM" file="${distFile}">

我最近试过这个:

<checksum algorithm="md5" format="MD5SUM">
    <fileset dir="." />
</checksum>

但上述 Ant 任务为 . 列出的每个文件生成一个单独的 .md5 文件。

我的目标是只有一个 .md5 文件,其中包含多行包含校验和和文件名(带有相对路径)。

非常感谢您的帮助!

【问题讨论】:

  • 编写一个脚本,将所有单独的校验和文件收集在一起。

标签: java hash ant md5 checksum


【解决方案1】:

您可以使用校验和任务为每个文件创建校验和文件,然后使用 concat 任务将它们合并到一个文件中。

    <checksum algorithm="SHA-256" fileext=".sha256" format="MD5SUM" todir="${dir.cache}/sha/${version}">
        <fileset dir="${dir.release}" />
    </checksum>
    <concat destfile="${dir.release}/DIGEST.sha256sum">
        <fileset dir="${dir.cache}/sha/${version}" />
    </concat>

【讨论】:

    【解决方案2】:

    根据 Mark 对原始问题的评论,我设法将以下 ant 脚本放在一起(注意需要 ant-contrib,至少版本 0.6):

    <for param="file">
        <path>
            <fileset dir="${dist}/." />
        </path>
        <sequential>
            <local name="md5" />
            <local name="relativeFile" />
    
            <checksum file="@{file}" algorithm="md5" format="MD5SUM" property="md5"/>
            <property name="relativeFile" location="@{file}" basedir="${dist}" relative="true" />
            <echo file="checksums.md5" append="true">${md5} *${relativeFile}
    </echo>
        </sequential>
    </for>
    

    此脚本迭代 (for) 我的 dist 目录中的路径/文件集(所有分发文件,因此准备部署的文件)并使用 &lt;checksum../&gt;task 计算每个文件的校验和,编写MD5 哈希成md5

    请注意,通过&lt;local... /&gt; 任务将md5relativeFile 设置为“本地”非常重要,因此可以在该for 循环中重新设置属性。

    &lt;property name="relativeFile"... /&gt; 任务根据我的 dist 目录 (${dist}) 将绝对文件路径 (@{file}) 转换为相对路径。

    最后,&lt;echo... /&gt; 任务将 md5 哈希和 MD5 格式的文件名写入/附加到“checksums.md5”文件(请注意,您的脚本应该在 for 循环之前删除该文件,因为 @987654332 @ 确实追加了新条目 (append="true")。

    代码的缩进是正确的:最后一个&lt;/echo&gt;必须在“深度0”缩进,所以没有空格或制表符被写入输出文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2012-10-20
      相关资源
      最近更新 更多