是否可以让Ant为包括子目录在内的多个文件生成一个.md5文件,从而生成一个包含多行的md5文件(每行包含校验和以及带有它的文件名的相对路径) ?
过去,我只将Ant校验和任务用于单个文件:
<checksum algorithm="md5" format="MD5SUM" file="${distFile}">
我最近试过这个:
<checksum algorithm="md5" format="MD5SUM">
<fileset dir="." />
</checksum>
但是上面的Ant任务为每个列出的文件生成一个.md5文件。
我的目标是只有一个包含校验和和文件名(包含相对路径)的多行的.md5文件。
非常感谢你的帮助!
答案 0 :(得分:2)
您可以使用校验和任务为每个文件创建校验和文件,然后使用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>
答案 1 :(得分:0)
根据Mark对原始问题的评论,我设法将以下蚂蚁脚本放在一起(请注意,需要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>
此脚本在我的dist目录中的路径/文件集上迭代(for
)(所有分发文件,以便准备部署的文件)并使用<checksum../>
任务计算每个文件的校验和文件,将MD5哈希写入md5
。
请注意,将md5
和relativeFile
设置为&#34; local&#34;通过<local... />
任务,可以在for循环中重新设置属性。
<property name="relativeFile"... />
任务根据我的dist目录(@{file}
)将绝对文件路径(${dist}
)转换为相对路径。
最后,<echo... />
任务将md5哈希和MD5格式的文件名写入&#34; checksums.md5&#34;文件(请注意,您的脚本应该在for循环之前删除该文件,因为echo
会附加新条目(append="true"
)。
代码的缩进是正确的:最后</echo>
必须位于&#34;深度0&#34;缩进,因此没有空格或制表符写入输出文件。