2013-01-07 2 views
1
<target name="openAssetXMLFile"> 
    <for list="${LogOfCurrentAssetChanges}" delimiter="${line.separator}" param="paths"> 
    <sequential> 
     <xmltask source="${basedir}@{paths}"> 
     <copy path="/x/id/text()" attrValue="true" property="type"/> 
     <copy path="/x/attribute[9]/data/stringValue/text()" attrValue="true" property="uid"/> 
     </xmltask> 
     <echo> ${type}</echo> 
     <echo> ${basedir}@{paths}</echo> 
     <echo> ${uid}</echo> 
    </sequential> 
    </for>  
</target> 

저는 여기에 상당히 도움이되지 않으며 도움이 필요합니다. 그래서 위의 buildfile 스 니핏은 macrodefinitions을 사용하는 sequential을 사용하므로 문자열은 보통 $ 기호가 아닌 @ 기호로 참조되어야합니다.MacroDef, 속성 및 xmltask

일부 xml 파일에 대한 상대 참조를 포함하는 logofcurrentassetchanges 파일이 있습니다. 이제 이것을 절대 참조 이름을 생성하기 위해 현재 디렉토리와 연결해야합니다. 연결된 문자열을 완벽하게 표시하면 루프 반복마다 각기 다른 XML 문자열이 예상대로 인쇄됩니다. 그러나 위의 그림과 같이 xmltask에서 사용하면 모든 반복에 맨 처음 소스가 사용됩니까? xmltask 소스 속성을 원래의 이전 값에서 없애려면 새로 고치거나 정리해야합니까? 또는이 문제를 해결하기 위해 할 수있는 일이 있습니까? 에코 문에서 샘플 출력 :

[echo] CSElement:1242615155986 
[echo] /y/z/t/u/11/67/MFootsfgsgfser(e7e105ef-660f-4363-8018-638f87ba06be).main.xml 
[echo] 7d454a57-fe1a-48c1-994c-bbcbbf9f78e4 
[echo] CSElement:1242615155986 
[echo] /a/b/c/MORegistsfgsfgfsgerLogsfgshinLinsgsfgks.jsp.main.xml 
[echo] 7d454a57-fe1a-48c1-994c-bbcbbf9f78e4 
여기 유형

및 UID는 계속 반복하지만, 인쇄 할 때 경로가 바로 보인다.

답변

1

는 (적어도 일부) 문제는 xmltask 사본 (typeuid 및 이름) 개미 속성 할당이다. Ant 속성 - 개미와 달리 @ 변수는 일반적으로 변경할 수 없으므로 값을 설정하면 변경되지 않습니다. 이것은 당신이보고있는 것입니다.

Ant 버전 1.8부터 local이라는 작업이 현재 '블록'의 속성 범위를 지정하는 데 사용할 수 있으므로 각 for 개의 반복에서 다른 값을 가질 수 있습니다. 그러면 다음과 같이 보입니다.

<sequential> 
    <local name="type" /> 
    <local name="uid" /> 
    <xmltask source="${basedir}@{paths}"> 
    ... etc. 
+0

감사합니다. 그건 :) – CodeGeek123