質問
現在、homebrewnビルドスクリプトをAntビルドスクリプトに置き換えています。
ここで、さまざまなトークンを特定のファイルのサイズに置き換える必要があります。 <length>
タスクを介してサイズをバイト単位で取得し、プロパティに格納する方法を知っていますが、キロバイトとメガバイト単位のサイズも必要です。
他の表現(KB、MB)のファイルサイズにアクセスしたり、Antターゲット内からこれらの値を計算してプロパティに保存したりするにはどうすればよいですか?
編集: <script>
タスクを発見した後、JavaScriptを使用して他の値を計算し、project.setNewProperty("foo", "bar");
を使用してプロジェクトに新しいプロパティを追加するのはかなり簡単でした。
解決
を使用して、サードパーティのライブラリやカスタムタスクを必要としないソリューションを見つけましたJavaScript(または他の Apache BSF または
<target name="insert-filesize">
<length file="${afile}" property="fs.length.bytes" />
<script language="javascript">
<![CDATA[
var length_bytes = project.getProperty("fs.length.bytes");
var length_kbytes = Math.round((length_bytes / 1024) * Math.pow(10,2))
/ Math.pow(10,2);
var length_mbytes = Math.round((length_kbytes / 1024) * Math.pow(10,2))
/ Math.pow(10,2);
project.setNewProperty("fs.length.kb", length_kbytes);
project.setNewProperty("fs.length.mb", length_mbytes);
]]>
</script>
<copy todir="${target.dir}">
<fileset dir="${source.dir}">
<include name="**/*" />
<exclude name="**/*.zip" />
</fileset>
<filterset begintoken="$$$$" endtoken="$$$$">
<filter token="SIZEBYTES" value="${fs.length.bytes}"/>
<filter token="SIZEKILOBYTES" value="${fs.length.kb}"/>
<filter token="SIZEMEGABYTES" value="${fs.length.mb}"/>
</filterset>
</copy>
</target>
他のヒント
http://ant-contrib.sourceforge.net/ に数学タスクがあります役に立つかもしれません
所属していません StackOverflow