gpt4 book ai didi

Ant:重命名文件以包含其 MD5

转载 作者:行者123 更新时间:2023-12-04 20:52:35 25 4
gpt4 key购买 nike

对于熟悉 ant 的人来说,这个问题可能非常简单,到目前为止我只使用了其中的基础知识。

我知道如何重命名文件,例如我已经在用:

<copy todir="build/css/">
<fileset dir="css/">
<include name="*.css"/>
</fileset>
<globmapper from="*.css" to="*-min.css"/>
</copy>

我知道如何计算 MD5:
<checksum file="foo.bar" property="foobarMD5"/>

我不知道如何将第二个包含在第一个中 , 重命名所有这些文件以包含它们的 MD5 - 目的是作为 webbrowser 缓存破坏者。另一个缓存破坏选项,附加“?[something]”并不好,正如一些谷歌网站管理员页面所解释的那样,将 MD5 作为名称的一部分更好。

最佳答案

我设法使用 for from ant contrib 产生了一个有点奇怪的解决方案.
但你必须install ant contrib第一的。
copysequential似乎不接受/评估 mappers (它不起作用,我用 ant 1.7.0 试过),所以我不得不创建一个额外的 move使用过滤器映射器来创建结果。

它执行以下操作:

  • 为每个文件创建一个 md5sum 并将其保存在属性 foobarMD5
  • 在每次迭代之前必须取消设置该属性
  • 我在同一个 dir 中创建了一个新文件命名 example.java_foobarMD5.java (注意文件名包含文件扩展名)
  • 我用 .java_ 移动所有文件将其名称添加到一个新文件夹并删除 .java_

  • 我用 .java 留下这个例子。


    <for param="file">
    <path>
    <fileset dir="src/" includes="**/*.java"/>
    </path>
    <sequential>
    <echo>Letter @{file}</echo>
    <var name="foobarMD5" unset="true"/>
    <checksum file="@{file}" property="foobarMD5"/>
    <echo>${foobarMD5}</echo>
    <copy file="@{file}" tofile="@{file}_${foobarMD5}.java"/>
    </sequential>
    </for>

    <move todir="teststack" verbose="true">
    <fileset dir="src/">
    <include name="**/*java_*"/>
    </fileset>
    <filtermapper>
    <replacestring from=".java_" to="-"/>
    </filtermapper>
    </move>

    关于Ant:重命名文件以包含其 MD5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8724727/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com