2011-12-22 61 views
2

我試圖使用爲目錄生成使用Ant構建命令爲目錄生成校驗和

我已經嘗試了下面的命令,但它會在每個文件的每個文件夾內遞歸地生成。

<target name="default" depends=""> 
    <echo message="Generating Checksum for each environment" /> 
    <checksum todir="${target.output.dir}" format="MD5SUM" > 
     <fileset dir="${target.output.dir}" /> 
    </checksum> 
</target> 

我只是想生成使用Ant命令特定的目錄來checksum。 我該怎麼做?

回答

2

您想使用totalproperty屬性。根據the documentation此屬性will hold a checksum of all the checksums and file paths

例如

<target name="hash"> 
    <checksum todir="x" format="MD5SUM" totalproperty="sum.of.all"> 
    <fileset dir="x"/> 
    </checksum> 
    <echo>${sum.of.all}</echo> 
</target> 

其他一般說明。

  • 這不是冪等的。每次運行它時,都會得到一個新值,因爲它將新的散列文件包含在新散列中(然後寫入新的散列文件)。我建議您將todir屬性更改爲指向其他地方
  • 這是一個好主意,可以有意義地爲您的目標命名。請參閱this great article by Martin Fowler for some naming ideas
  • 如果不存在依賴關係,則不需要depends屬性。
+0

非常感謝:)它的工作原理。好吧,還有一個問題。如何使用SHA-256格式? –

+0

Ant可能在調用'MessageDigest.getInstance(format)'後面。這意味着您需要安裝支持所需格式的安全提供程序。你試過了嗎?如果它不起作用,那麼你應該安裝一個提供者(例如http://bouncycastle.org/到你的JRE中)。 – Synesso