Question

J'essaye de compiler un jrxml en utilisant ant. J'ai créé mon jrxml sur iReports donc je n'ai pas de build.xml. Lors de l'exécution de la commande ant, il demande un build.xml. J'ai créé ce fichier dans le même répertoire que mon jrxml mais je ne sais pas ce que je dois y mettre pour lier mon jrxml à mon jar scriptlet. J'apprécierai votre aide, je suis un peu perdu ..

Était-ce utile?

La solution

Vous pouvez compiler le modèle de rapport à l'aide de la tâche ant net.sf.jasperreports.ant.JRAntCompileTask .

L'exemple tiré de ici :

<path id="runClasspath">
    <pathelement location="${path_to_jasper_libs}"/>
    <pathelement path="${path_to_scriplet}\scriplet.jar"/>
</path>

<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>

<target name="compile2">
  <mkdir dir="./build/reports"/> 
  <jrc 
    destdir="./build/reports"
    tempdir="./build/reports"
    keepjava="true"
    xmlvalidation="true">
   <src>
    <fileset dir="./reports">
     <include name="**/*.jrxml"/>
    </fileset>
   </src>
   <classpath refid="runClasspath"/>
  </jrc> 
</target> 

La citation du site:

En plus des attributs srcdir et destdir, le jrc custom La tâche Ant livrée avec JasperReports prend en charge les attributs suivants:

  • compilateur: Nom de la classe qui implémente le JRCompiler interface à utiliser pour la compilation des rapports (facultatif).
  • xmlvalidation: indicateur pour indiquer si la validation XML doit être effectuée sur les fichiers de modèle de rapport source (vrai par défaut).
  • tempdir: emplacement pour stocker les fichiers générés temporairement (le répertoire de travail actuel par défaut).
  • keepjava: marquer pour indiquer si les fichiers Java temporaires générés à la volée doivent être conservés et non supprimés automatiquement (faux par défaut).

  • L'exemple de travail:

    La classe SampleJRScriptlet :

    import com.google.common.base.Strings;
    import net.sf.jasperreports.engine.JRDefaultScriptlet;
    
    public class SampleJRScriptlet extends JRDefaultScriptlet {
    
        public String doubleField(String value) {
            return Strings.repeat(value, 2);
        }
    }
    

    Le modèle de rapport à compiler (le fichier report_with_scriplet.jrxml ):

    <jasperReport ... scriptletClass="SampleJRScriptlet">
        <property name="ireport.zoom" value="1.0"/>
        <property name="ireport.x" value="0"/>
        <property name="ireport.y" value="0"/>
        <queryString language="xPath">
            <![CDATA[/Northwind/Customers]]>
        </queryString>
        <field name="CustomerID" class="java.lang.String">
            <fieldDescription><![CDATA[CustomerID]]></fieldDescription>
        </field>
        <field name="CompanyName" class="java.lang.String">
            <fieldDescription><![CDATA[CompanyName]]></fieldDescription>
        </field>
        <field name="ContactName" class="java.lang.String">
            <fieldDescription><![CDATA[ContactName]]></fieldDescription>
        </field>
        <field name="ContactTitle" class="java.lang.String">
            <fieldDescription><![CDATA[ContactTitle]]></fieldDescription>
        </field>
        <detail>
            <band height="20" splitType="Stretch">
                <textField>
                    <reportElement x="0" y="0" width="100" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$P{REPORT_SCRIPTLET}.doubleField("$F{CustomerID}")]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement x="100" y="0" width="100" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{CompanyName}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement x="200" y="0" width="100" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{ContactName}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement x="300" y="0" width="100" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{ContactTitle}]]></textFieldExpression>
                </textField>
            </band>
        </detail>
    </jasperReport>
    

    Mon script ant (le fichier compile_report.xml ):

    <project default="compile" basedir=".">
        <path id="classpath">
            <fileset dir="./../../target/alternateLocation">
                <include name="jasperreports-4.1.2.jar"/>
                <include name="commons-logging-1.0.2.jar"/>
                <include name="commons-digester-1.7.jar"/>
                <include name="commons-collections-2.1.jar"/>
                <include name="commons-beanutils-1.8.0.jar"/>
                <include name="groovy-all-1.0-jsr-05.jar"/>
            </fileset> 
        </path>
    
        <path id="runClasspath">
            <path refid="classpath"/> 
            <pathelement path="./../../target/myscriplet.jar"/>
        </path>
    
        <taskdef name="jrc" classname="net.sf.jasperreports.ant.JRAntCompileTask"> 
            <classpath refid="classpath"/>
        </taskdef>
    
        <target name="compile">
            <mkdir dir="./compiled_jasper"/> 
            <jrc 
        destdir="./compiled_jasper"
        tempdir="./compiled_jasper"
        keepjava="true"
        xmlvalidation="true">
                <src>
                    <fileset dir="./report">
                        <include name="**/*.jrxml"/>
                    </fileset>
                </src>
                <classpath refid="runClasspath"/>
            </jrc> 
        </target> 
    </project>
    

    La structure des dossiers:

    report
      report_with_scriplet.jrxml
    compile_report.xml
    

    Après l'exécution de la structure du dossier sript sera:

    report
      report_with_scriplet.jrxml
    compiled_jasper
      report_with_scriplet_1323195663885_780040.groovy
      report_with_scriplet.jasper
    compile_report.xml
    
    Licencié sous: CC-BY-SA avec attribution
    Non affilié à StackOverflow
    scroll top