チアゴルシルバ、
xmlproperty と javascript の組み合わせを使用して、projects.xml ファイルの複数要素 (同じノード) を分割し、ant でプロジェクト ノード データ フィールドを使用することができました。すべてのアクションは、1 回の実行で 1 つの ant ファイルで実行されます。
上記の例のサンプル データ projects.xml ファイル:
<projects>
<project>
<name>Project 1</name>
<url>//someurl1</url>
<package>project1</package>
</project>
<project>
<name>Project 2</name>
<url>//someurl2</url>
<package>project2</package>
</project>
</projects>
次の形式の projects.xml ファイルに変換する必要があります。
<myProjects>
<!-- name;url;package -->
<myProject>Project 1;//someurl1;project1</myProject>
<myProject>Project 2;//someurl2;project2</myProject>
</myProjects>
ここで、前のノード要素は、フィールドが「;」で区切られた単一の文字列に変換されました。キャラクター。
JavaScript で ant の「プロジェクト」オブジェクトを使用するため、混乱を避けるために要素「プロジェクト」の名前を「myProject」に変更しました。
反復可能な xml ノードを文字列にフラット化したら、次の ant スクリプトを使用して要素を反復処理し、フラット化されたプロパティを読み取り、必要に応じて使用できます。
<project name="testProjects" default="ProcessProjects" basedir=".">
<target name="init" >
<!-- From: http://sourceforge.net/projects/ant-contrib/files/ant-contrib/
download the jar and put it a created "lib" folder of your project, where ant file is.
-->
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath><pathelement location="./lib/ant-contrib-1.0b3.jar"/></classpath>
</taskdef>
<xmlproperty file="./projects.xml" keepRoot="false"/>
<!-- Properties will be used to store the values of: name;url;package -->
<property name="name" value=""/>
<property name="url" value=""/>
<property name="package" value=""/>
</target>
<target name="ProcessProjects" depends="init">
<echo>Process Projects</echo>
<foreach list="${myProject}" target="processLoopStep" param="var1"/>
</target>
<target name="processLoopStep" >
<script language="javascript"> <![CDATA[
var var1 = project.getProperty("var1");
var parts = var1.split(";");
project.setProperty("name",parts[0]);
project.setProperty("url",parts[1]);
project.setProperty("package",parts[2]);
]]>
</script>
<!-- Do what you like with the values of the <project> element -->
<echo message="myProject name = ${name} url = ${url} package = ${package}"/>
</target>
</project>
ファイル: - C:\temp\lib\ProcessProjects.xml - ビルド - C:\temp\lib\projects.xml - データ - C:\temp\lib\ant-contrib-1.0b3.jar - lib jar
出力:
C:\temp>ant -f ProcessProjects.xml
Buildfile: C:\temp\ProcessProjects.xml
init:
ProcessProjects:
[echo] Process Projects
processLoopStep:
[echo] myProject name = Project 1 url = //someurl1 package = project1
processLoopStep:
[echo] myProject name = Project 2 url = //someurl2 package = project2
BUILD SUCCESSFUL
Total time: 0 seconds
よろしく、ジュレク