Pregunta

Actualmente estoy en el proceso de reemplazar mi script de compilación casero por un script de compilación Ant.

Ahora necesito reemplazar varios tokens por el tamaño de un archivo específico.Sé cómo obtener el tamaño en bytes a través del <length> tarea y almacenarla en una propiedad, pero también necesito el tamaño en kilobytes y megabytes.

¿Cómo puedo acceder al tamaño del archivo en otras representaciones (KB, MB) o calcular estos valores desde el objetivo Ant y almacenarlos en una propiedad?

Editar: Después de que descubrí el <script> tarea, fue bastante fácil calcular los otros valores usando algo de JavaScript y agregar una nueva propiedad al proyecto usando project.setNewProperty("foo", "bar");.

¿Fue útil?

Solución

Encontré una solución que no requiere ninguna biblioteca de terceros o tareas personalizadas con <script> tarea que permite utilizar JavaScript (o cualquier otra Apache BSF o lenguaje admitido JSR 223 ) desde un objetivo Ant.

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

Otros consejos

Hay una tarea matemática en http://ant-contrib.sourceforge.net/ eso puede ser útil

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top