ant-contrib foreach
タスクを使用して、各jrxml
ファイルをループし、それらのそれぞれについてjrc
タスクを呼び出すことができます。あなたが持っていない場合は、install ant-contribにJARファイルをAntインストールのlib
ディレクトリにコピーする必要があります(Eclipseを使用している場合は、「ウィンドウ>環境設定> Ant>ランタイムJARを「Ant Home Entries」に追加する)。
以下は、現在のディレクトリの下にあるjrxml
すべてのファイルを選択するターゲット"all"
を定義しています。これらのファイルごとに"jrc"
ターゲットが呼び出され、対応するファイルはプロパティjrxml.file
によって参照されます。
このタスクの内部では、jrxml
ファイルがあるディレクトリをdirname
タスクで取得され、jrxml
ファイルの名前は、basename
タスクを使用して取得されます。作成された.jasper
ファイルは、jrxml
ファイルと同じ名前のフォルダの下に作成されます。 (これは最初にmkdir
タスクで作成する必要があります)。一例として、
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<target name="all">
<foreach target="jrc" param="jrxml.file">
<path>
<fileset dir=".">
<include name="**/*.jrxml"/>
</fileset>
</path>
</foreach>
</target>
<target name="jrc">
<dirname property="jrxml.dir" file="${jrxml.file}"/>
<basename property="jrxml.filename" file="${jrxml.file}" suffix="jrxml"/>
<mkdir dir="${jrxml.dir}/${jrxml.filename}"/>
<jrc srcdir="${jrxml.dir}"
destdir="${jrxml.dir}/${jrxml.filename}"
tempdir="${jrxml.dir}/${jrxml.filename}"
xmlvalidation="true">
<classpath refid="classpath"/>
<include name="${jrxml.filename}.jrxml"/>
</jrc>
</target>
あなたは構造があれば、:
+folder
+--jrxml
+----Example1.jrxml
+----Example2.jrxml
を結果は
+folder
+--jrxml
+----Example1.jrxml
+----Example1
+------Example1.jasper
+----Example2.jrxml
+----Example2
+------Example2.jasper
になりますが、別の '' srcdir'とdestdir'の値の一例を提供することができ?私は['foreach'](http://ant-contrib.sourceforge.net/tasks/tasks/foreach.html)ant-contribタスクがあなたがここで望むものだと思います。 – Tunaki