具有 *.jrxml 文件扩展名的报告模板源文件被编译成具有 *.jasper 文件扩展名的序列化对象文件,就像具有 *.java 文件扩展名的 Java 源文件被转换成带有 * 的 Java 字节码二进制文件一样.class 文件扩展名。
在执行此 jasper 报告时,会生成代表 .jrxml 的 .java 文件,然后它们会创建 .jasper 文件。
我从未使用过 target="writeApi" 但我猜它类似于
<taskdef name="jrc" classname="net.sf.jasperreports.ant.JRAntCompileTask">
<classpath refid="classpath"/>
</taskdef>
<target name="compile1">
<mkdir dir="./build/reports"/>
<jrc
srcdir="./reports"
destdir="./build/reports"
tempdir="./build/reports"
keepjava="true"
xmlvalidation="true">
<classpath refid="runClasspath"/>
<include name="**/*.jrxml"/>
</jrc>
</target>
注意:keepjava="true",但没有生成 .jasper 文件,因此它只生成 .java 文件。
如果你喜欢使用特定的JRAntApiWriteTask 即
用于批量生成 Java 源文件的 Ant 任务,该文件使用 JR API 从编译的报告模板文件或源 JRXML 文件创建报告设计。
请注意,如果您有 .jasper(编译文件)而不是 jrxml 文件,这可能会很有用,
你会使用类似于以下的蚂蚁:
<taskdef name="jrc" classname="net.sf.jasperreports.ant.JRAntApiWriteTask">
<classpath refid="classpath"/>
</taskdef>
<target name="writeApi">
<jrc
srcdir="./yourreports"
destdir="./build/java"
runApi="true"
>
<classpath refid="runClasspath"/>
</jrc>
</target>
注意:我设置了runApi="true",这样jrxml文件也会生成(它们通常更有用。
有关任务的文档,请参阅:JRAntApiWriteTask