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

Ant 如何将每个jasper文件编译到自己的目录中?,ant,jasper-reports,Ant,Jasper Reports,我试图创建一个ant脚本来编译jasper文件,但我有很多“srcdir”和“destdir”: …我希望它将每个文件编译为自己的目录。对于每个“.jrxml”文件 有什么办法吗?您可以使用ant contrib任务在每个jrxml文件上循环,并为每个文件调用jrc任务。如果没有,则需要将其JAR文件复制到Ant安装的lib目录中(如果使用Eclipse,则可以通过转到“窗口>首选项>Ant>运行时”并将JAR添加到“Ant Home Entries”来添加它) 下面定义了一个目标“all”

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


…我希望它将每个文件编译为自己的目录。对于每个“.jrxml”文件

有什么办法吗?

您可以使用ant contrib任务在每个
jrxml
文件上循环,并为每个文件调用
jrc
任务。如果没有,则需要将其JAR文件复制到Ant安装的
lib
目录中(如果使用Eclipse,则可以通过转到“窗口>首选项>Ant>运行时”并将JAR添加到“Ant Home Entries”来添加它)

下面定义了一个目标
“all”
,它将选择当前目录下的所有
jrxml
文件。对于这些文件中的每个文件,都将调用
“jrc”
目标,相应的文件将由属性
jrxml.file
引用

在此任务中,将使用任务检索
jrxml
文件所在的目录,并使用任务检索
jrxml
文件的名称。构建的
.jasper
文件将在与
jrxml
文件同名的文件夹下创建。(首先需要使用任务创建它)

结果将是

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

能否提供不同
srcdir
destdir
的值示例?我认为ant contrib任务正是你想要的。
<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