Vra

Ek is op die oomblik in die proses van die vervanging van my homebrewn bou script deur 'n mier bou script.

Nou moet ek om verskeie tekens te vervang deur die grootte van 'n spesifieke lêer. Ek weet hoe om die grootte in grepe kry via die <length> taak en stoor in 'n eiendom nie, maar ek moet die grootte in kilogrepe en megagrepe ook.

Hoe kan ek toegang tot die grootte van die lêer in ander voorstellings (KB, MB) of bereken die waardes vanuit die mier teiken en stoor dit in 'n eiendom?

Edit:. Nadat ek die <script> taak ontdek het, was dit redelik maklik om die ander waardes met behulp van 'n paar JavaScript bereken en 'n nuwe eiendom te voeg tot die projek met behulp van project.setNewProperty("foo", "bar");

Was dit nuttig?

Oplossing

Ek het 'n oplossing te vind wat 'n derde party biblioteek of persoonlike take vereis nie die gebruik van die <script> taak wat dit moontlik maak vir die gebruik van JavaScript (of enige ander Apache BSF of JSR 223 ondersteun taal) vanuit 'n mier teiken.

<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>

Ander wenke

Daar is 'n wiskunde taak by http://ant-contrib.sourceforge.net/ wat nuttig kan wees

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top