2016-04-22 5 views
2

Ich versuche, ein Ant-Skript zu erstellen meine Jaspis-Dateien zu erstellen, aber ich habe viele „srcdir“ und „destdir“:Wie kompiliere ich jede Jaspis-Datei in ein eigenes Verzeichnis?

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

... und ich würde es jede Datei kompilieren möchte es eigenes dir. Für jede ".jrxml" Datei.

Gibt es einen Weg?

+0

Können Sie ein Beispiel von Werten für verschiedene 'srcdir' und' destdir' bieten sein ? Ich denke, dass die ['foreach'] (http://ant-contrib.sourceforge.net/tasks/tasks/foreach.html) Ant-Beitrag Aufgabe ist, was Sie hier wollen. – Tunaki

Antwort

3

Sie können die ant-contrib foreach Aufgabe verwenden, um über jede jrxml Datei zu schleifen und die jrc Aufgabe für jede von diesen aufzurufen. Wenn Sie es nicht haben, müssen Sie install ant-contrib kopieren, indem Sie seine JAR-Datei in das Verzeichnis lib Ihrer Ant-Installation kopieren (wenn Sie Eclipse verwenden, können Sie es hinzufügen, indem Sie zu "Fenster> Einstellungen> Ant> Runtime gehen "und Hinzufügen der JAR in" Ant Home Entries ").

Im Folgenden wird ein Ziel definiert "all", die alle jrxml Dateien im aktuellen Verzeichnis auswählen wird. Für jede dieser Dateien wird das Ziel "jrc" aufgerufen und die entsprechende Datei wird von der Eigenschaft jrxml.file referenziert.

Innerhalb dieser Aufgabe, in dem das Verzeichnis der jrxml Datei mit der dirname Aufgabe und der Namen der jrxml Datei abgerufen befindet sich mit der basename Aufgabe abgerufen. Die erstellte Datei .jasper wird unter einem Ordner mit demselben Namen wie die Datei jrxml erstellt. (Es muss zuerst mit der mkdir Aufgabe erstellt werden).

<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> 

Als Beispiel, wenn Sie eine Struktur haben:

+folder 
+--jrxml 
+----Example1.jrxml 
+----Example2.jrxml 

das Ergebnis wird

+folder 
+--jrxml 
+----Example1.jrxml 
+----Example1 
+------Example1.jasper 
+----Example2.jrxml 
+----Example2 
+------Example2.jasper 
Verwandte Themen