2012-12-17 3 views
3

개미를 처음 접했을 때 [2] 폴더를 만들고 아래에 파일을 추가 할 때 [1]이있는 현재 시간을 할당하는 시나리오가 있습니다. 파일을 폴더 [3]에 저장하십시오. 그래서 나는 거기에 내가 가지고있는 시간의 가치를 얻을 필요가있다. 나는 기본적으로 자바 녀석이다. 자바에 있다면 그것은 하나의 전역 변수를 가지고 그것을 다시 사용하는 몇 초의 일이다. 그러나 여기에서는 다른 대상 태그에서 전역 적으로 값을 재사용하는 방법을 모르겠습니다. 친절하게도 이것에 대한 생각을 나누십시오.변수에 값을 할당하고 재사용하는 방법 개미

[1]

<macrodef name="set.timestamp"> 
     <sequential> 
     <tstamp> 
      <format property="current.time" pattern="MM-dd-yyyy_hh-mm-ss"/> 
     </tstamp> 
     </sequential> 
    </macrodef> 

[2]

<target name="init" depends="setRuntimeArchive"> 
     <set.timestamp/> 
     <mkdir dir="${results}/${classname}_${current.time}/xml" /> 
     <mkdir dir="${results}/${classname}_${current.time}/html" /> 
     <mkdir dir="${junit-report-output}" /> 
    </target> 

[3] : 여기에 내가 위 [2]

가지고와 동일하게 current.time 값을 얻을 수 아니다
<target name="runTestResults"> 
     <copy 
     file="${eclipse-home}/${report}.xml" 
     tofile="${results}/${classname}_${current.time}/xml/${report}_${platform}.xml" 
     failonerror="false" /> 
     <xslt 
     style="${etf-home}/plugins/${org.eclipse.test}/JUNIT.XSL" 
     basedir="${results}/${classname}_${current.time}/xml" 
     destdir="${results}/${classname}_${current.time}/html" /> 
     <antcall target="runTestStatus" /> 
    </target> 
+0

전체 개미 스크립트를 게시 할 수 있습니까? 이것은 작업이 실행되는 순서와 관련이있을 수 있습니다. 어쩌면 runTestResults는 init에 의존하지 않으므로'set.timestamp' 매크로는 호출되지 않습니다. – David

답변

4

Ant에서는 대상에 포함되지 않은 모든 작업이 대상보다 먼저 실행됩니다. 따라서, 당신이 할 일은 어떤 대상 이외의 재산 current.time을 설정하고 해당 속성은 모든 대상에 대해 사용할 수 있습니다 :이 build.xml가 처음 인 경우 위의에서

<project name="foo" default="some.task" basedir="."> 
    <tstamp> 
     <format property="current.time" 
      pattern="MM-dd-yyyy_hh-mm-ss"/> 
    </tstamp> 

    <target name="run.test.status" 
     depends="run.test.results"> 
     ... 
    </target> 

    <target name="run.test.results"> 
     <property name="results.dir" 
      value="${results/${classname_$current.time}/xml"/> 
     <mkdir dir="${results.dir}"/> 
     <copy 
      file="${eclipse-home}/${report}.xml" 
      tofile="${results.dir}/${report}_${platform}.xml" 
      failonerror="false" /> 
     <xslt 
      style="${etf-home}/plugins/${org.eclipse.test}/JUNIT.XSL" 
      basedir="${results}/${classname}_${current.time}/xml" 
      destdir="${results}/${classname}_${current.time}/html" /> 
    </target> 

, 타임 스탬프를 설정 어떤 목표에도 없기 때문에 실행되었습니다. 이제 타임 스탬프는 모든 타겟에서 사용할 수 있습니다.

덧붙여서, StackOverflow로 읽어 내기 쉽도록하기 위해 ${results.dir} 속성을 설정했습니다. 그렇지 않으면 디렉토리 이름이 페이지 가장자리를 넘어 확장되기 때문입니다.

관련 문제