2016-04-22 7 views
2

私は碧玉ファイルをコンパイルするAntスクリプトを作成しようとしているが、私は多くの「SRCDIR」と「DESTDIR」があります。各ジャスパーファイルを独自のディレクトリにコンパイルする方法は?

<target name="all"> 
    <jrc 
    srcdir="many..." 
    destdir="many..." 
    tempdir="any" 
    xmlvalidation="true"> 
    <classpath refid="classpath"/> 
    <include name="**/*.jrxml"/> 
    </jrc> 
</target> 

を...と私はそれがそれにそれぞれのファイルをコンパイルしたいと思います自分のdir。すべての ".jrxml"ファイル。

方法はありますか?

+0

になりますが、別の '' srcdir'とdestdir'の値の一例を提供することができ?私は['foreach'](http://ant-contrib.sourceforge.net/tasks/tasks/foreach.html)ant-contribタスクがあなたがここで望むものだと思います。 – Tunaki

答えて

3

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 
関連する問題