كيفية استخدام حجم الملف داخل النمل الهدف

StackOverflow https://stackoverflow.com/questions/312652

  •  10-07-2019
  •  | 
  •  

سؤال

أنا حاليا في عملية استبدال بلدي homebrewn بناء السيناريو من قبل نملة بناء السيناريو.

الآن أنا بحاجة إلى استبدال مختلف الرموز حسب حجم ملف معين.أنا أعرف كيفية الحصول على حجم بالبايت عبر <length> المهمة وتخزينها في الممتلكات ، ولكن أنا في حاجة إلى الحجم بالكيلو بايت و ميغا بايت أيضا.

كيف يمكنني الوصول إلى حجم الملف في التمثيل (KB, MB) أو حساب هذه القيم من داخل النمل الهدف وتخزينها في العقار ؟

تحرير: بعد أن اكتشفت <script> المهمة كانت سهلة إلى حد ما على حساب القيم الأخرى باستخدام بعض جافا سكريبت إضافة خاصية جديدة إلى المشروع باستخدام project.setNewProperty("foo", "bar");.

هل كانت مفيدة؟

المحلول

لقد وجدت الحل الذي لا يحتاج إلى أي طرف ثالث مكتبة أو المهام المخصصة باستخدام <script> المهمة الذي يسمح باستخدام جافا سكريبت (أو أي دولة أخرى أباتشي البنك السعودي الفرنسي أو JSR 223 لغة معتمدة) من داخل نملة الهدف.

<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 مع الإسناد
لا تنتمي إلى StackOverflow
scroll top