我试图创建一个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;文件。
有办法吗?
答案 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>