How to use size of file inside Ant target

前端 未结 2 2019
深忆病人
深忆病人 2021-01-18 06:31

I\'m currently in the process of replacing my homebrewn build script by an Ant build script.

Now I need to replace various tokens by the size of a specific file. I k

相关标签:
2条回答
  • 2021-01-18 06:56

    I found a solution that does not require any third-party library or custom tasks using the <script> task that allows for using JavaScript (or any other Apache BSF or JSR 223 supported language) from within an Ant target.

    <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>
    
    0 讨论(0)
  • 2021-01-18 07:14

    There is a math task at http://ant-contrib.sourceforge.net/ that may be useful

    0 讨论(0)
提交回复
热议问题