【问题标题】:How to compile each jasper file to its own directory?如何将每个 jasper 文件编译到自己的目录中?
【发布时间】:2016-04-22 16:10:57
【问题描述】:

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

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

...我希望它能够将每个文件编译到它自己的目录中。对于每个“.jrxml”文件。

有办法吗?

【问题讨论】:

  • 您能否提供不同srcdirdestdir 的值示例?我认为foreach ant-contrib 任务就是你想要的。

标签: ant jasper-reports


【解决方案1】:

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

下面定义了一个目标"all",它将选择当前目录下的所有jrxml文件。对于每个文件,将调用"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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多