如何将每个jasper文件编译到自己的目录?

时间:2016-04-22 16:10:57

标签: ant jasper-reports

我试图创建一个ant脚本来编译我的jasper文件,但我有很多" srcdir"和" destdir":

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

...我希望将每个文件编译成自己的目录。对于每一个&#34; .jrxml&#34;文件。

有办法吗?

1 个答案:

答案 0 :(得分:3)

您可以使用ant-contrib foreach任务循环遍历每个jrxml文件,并为每个jrc任务调用lib任务。如果你没有它,你需要{J}文件复制到安装的"all"目录install ant-contrib(如果你正在使用Eclipse,你可以通过转到它来添加它“Window&gt; Preferences&gt; Ant&gt; Runtime”并将JAR添加到“Ant Home Entries”中。

以下定义了一个目标jrxml,它将选择当前目录下的所有"jrc"个文件。对于每个文件,将调用jrxml.file目标,并且属性jrxml将引用相应的文件。

在此任务中,使用dirname任务检索jrxml文件所在的目录,并使用basename任务检索.jasper文件的名称。构建的jrxml文件将在与<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> 文件同名的文件夹下创建。 (需要先使用mkdir任务创建它。)

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

例如,如果你有一个结构:

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

结果将是

<div class="styled-select blue">
  <select name="brand" id="brand">
    <option>Choose category first</option>
    <option>Brand one</option>
    <option>Brand two</option>
  </select>
</div>