簡體   English   中英

如何使用Ant目標內的文件大小

[英]How to use size of file inside Ant target

我目前正在用Ant構建腳本替換我的homebrewn構建腳本。

現在我需要用特定文件的大小替換各種標記。 我知道如何通過<length>任務獲取大小(以字節為單位)並存儲在屬性中,但我需要以千字節和兆字節為單位的大小。

如何在其他表示形式(KB,MB)中訪問文件大小或從Ant目標中計算這些值並將它們存儲在屬性中?

編輯:在我發現<script>任務之后,使用一些JavaScript計算其他值並使用project.setNewProperty("foo", "bar");向項目添加新屬性相當容易project.setNewProperty("foo", "bar");

我找到了一個解決方案,它不需要使用允許在Ant目標中使用JavaScript(或任何其他Apache BSFJSR 223支持的語言)的<script>任務的任何第三方庫或自定義任務。

<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/上有一個數學任務可能很有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM