Frage

Ich bin gerade dabei, mein homebrewn Build-Skript von einem Ant-Build-Skript zu ersetzen.

Jetzt muss ich verschiedene Token durch die Größe einer bestimmten Datei ersetzen. Ich weiß, wie die Größe in Bytes über die <length> Aufgabe zu erhalten und in einer Eigenschaft speichern, aber ich brauche die Größe in Kilobyte und Megabyte zu.

Wie kann ich die Dateigröße in anderen Darstellungen zugreifen (KB, MB) oder diese Werte berechnen aus dem Ant-Ziel und speichern sie in einer Eigenschaft?

Edit:. Nachdem ich die <script> Aufgabe entdecken, war es ziemlich einfach, die anderen Werte mit etwas JavaScript zu berechnen und eine neue Eigenschaft für das Projekt mit project.setNewProperty("foo", "bar"); hinzufügen

War es hilfreich?

Lösung

ich eine Lösung gefunden, die keine Drittanbieter-Bibliothek oder benutzerdefinierte Aufgaben erfordern mit dem <script> Aufgabe die oder Apache BSF für die Verwendung von JavaScript (oder jede andere JSR 223 unterstützte Sprache) von innerhalb einer Ziel-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>

Andere Tipps

Es gibt eine mathematische Aufgabe unter http://ant-contrib.sourceforge.net/ das kann nützlich sein,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top