Es cierto lo que dices. En cada ejecucion estarias compilando el jrxml a jasper.
Aqui dejo un build.xml de ant para compilar los jaspers.
Basicamente toma los .jrxml de la carpeta plantillas y deja en la carpeta jaspers los archivos .jasper :D
Código:
<project name="miProy" default="compileReports" basedir=".">
<property name="jaspers.dir" value="miProy/WEB-INF/informes/jasper"/>
<property name="plantillas.dir" value="miProy/WEB-INF/informes/plantillas"/>
<property name="lib.dir" value="miProy/WEB-INF/lib" />
<path id="classpath">
<pathelement location="./"/>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="compileReports" description="Compiles the XML report design and produces the .jasper file.">
<taskdef name="jrc" classname="net.sf.jasperreports.ant.JRAntCompileTask">
<classpath refid="classpath"/>
</taskdef>
<jrc destdir="${jaspers.dir}" >
<src>
<fileset dir="${plantillas.dir}">
<include name="**/*.jrxml"/>
</fileset>
</src>
<classpath refid="classpath"/>
</jrc>
</target>
</project>