2012-08-24 4 views
2

나는 인터넷 곳곳을 둘러 보았지만 어디서나 대답을 찾을 수 없었다. ANT 스크립트로 코딩 된 MQFTE 작업이 있고 파일에 오늘 날짜가없는 경우 파일을 이동하는 프로세스에 문제가 있습니다. 내가 뭘하고 싶은지는 조건부 중지입니다. 은 실행 중간에 값을 반환하므로 작업이 더 이상 루틴을 통과하지 않고 파일이 건너 뛴 것으로 식별되면 끝납니다.파일을 마지막으로 수정 한 시간을 기준으로 Ant 스크립트를 조건부로 중지 할 수 있습니까?

ANT에서 가능합니까? 아니면 스크립트에있는 모든 <target>을 통과해야합니까?

답변

1

Ant 스크립트를 조건부로 중지하는 데 task작업을 사용할 수 있습니다. 아래 예제에서는 TODAY 속성을 현재 날짜로 초기화 한 다음 요소를 중첩 된 <date> 요소와 함께 사용하여 오늘 날짜 이전에 수정 된 파일 만 선택합니다. pathconvert 작업은 에 오늘 날짜 이전에 수정 된 파일이 하나 이상있는 경우에만 files-not-empty 속성을 설정합니다. 복사 할 파일이 없으면 fail 작업을 사용하여 Ant 스크립트를 중지합니다.

<target name="copy-if-not-modified-today"> 
    <property name="copy-from.dir" value="${basedir}" /> 
    <property name="copy-to.dir" value="${basedir}/build/copied_files" /> 
    <mkdir dir="${copy-to.dir}" /> 

    <tstamp> 
    <format property="TODAY" pattern="MM/dd/yyyy" /> 
    </tstamp> 

    <fileset id="files" dir="${copy-from.dir}" includes="*"> 
    <date datetime="${TODAY} 12:00 AM" when="before"/> 
    </fileset> 
    <pathconvert property="files-not-empty" setonempty="false" refid="files" /> 

    <!-- 
    Stop the Ant script if there are no files to copy that were modified prior 
    to today's date. 
    --> 
    <fail unless="files-not-empty" /> 

    <copy todir="${copy-to.dir}" preservelastmodified="true"> 
    <fileset refid="files" /> 
    </copy> 
</target> 
0

Ant-Contrib Tasks이 도움이 될 수 있습니다. 조건을 기반으로 작업을 수행하려면 "If-then-else"가 가능한 솔루션입니다. - "Ant if"