문제

저는 현재 개미 빌드 스크립트로 Homebrewn 빌드 스크립트를 대체하는 중입니다.

이제 특정 파일의 크기로 다양한 토큰을 교체해야합니다. 나는 크기를 바이트로 얻는 방법을 알고 있습니다. <length> 재산에 작업하고 보관하지만 킬로 바이트와 메가 바이트도 크기가 필요합니다.

다른 표현 (KB, MB)에서 파일 크기에 액세스하거나 개미 대상 내에서 이러한 값을 계산하고 속성에 저장하려면 어떻게해야합니까?

편집하다: 내가 발견 한 후 <script> 작업, 일부 JavaScript를 사용하여 다른 값을 계산하고 사용하여 프로젝트에 새 속성을 추가하는 것은 상당히 쉬웠습니다. project.setNewProperty("foo", "bar");.

도움이 되었습니까?

해결책

나는 타사 라이브러리 또는 사용자 정의 작업이 필요하지 않은 솔루션을 찾았습니다. <script> 직무 이를 통해 JavaScript (또는 다른 사람)를 사용할 수 있습니다 아파치 BSF 또는 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