在jrxml中导入自定义类并使用maven插件进行编译

时间:2013-10-21 13:38:59

标签: java maven jasper-reports maven-plugin jasper-plugin

我必须在 JasperReports 的JRXML文件中导入一些自定义的 Java 类。
我可以使用

来做到这一点
<import value="org.ga.jasper.sample.MyCustomClass"/>

这非常好用,我可以运行这个jrxml并测试我的代码。

当我想使用 jasperreports-maven-plugin 将其预编译为.jasper文件时出现问题。

在进行构建时,它抱怨说它找不到我的包,因此导入无效。

package org.ga.jasper.sample does not exist
import org.ga.jasper.sample.MyCustomClass;

仅供参考,我的 Java 代码和 .jrxml 位于相同的maven模块中但位于不同的文件夹中。

以下是我的插件标记

中的代码
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jasperreports-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>compile-reports</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <sourceDirectory>src/main/resources/jasper</sourceDirectory>
        <outputDirectory>${project.build.directory}/jasper</outputDirectory>
        <compiler>net.sf.jasperreports.engine.design.JRJavacCompiler</compiler>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>4.5.1</version>
        </dependency>
    </dependencies>
</plugin>

2 个答案:

答案 0 :(得分:4)

默认情况下,插件在编译当前模块的类之前在generate-resources阶段运行。您可以将插件更改为在编译阶段运行。请参阅页面底部的注释:

另外,请看这个类似的问答:

答案 1 :(得分:1)

这就是我解决问题的方法。添加阶段

         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jasperreports-maven-plugin</artifactId>
            <executions>
             <execution>
                  <phase>compile</phase>
                  <goals>  
                    <goal>compile-reports</goal>
                  </goals>
             </execution>
            </executions>
            <configuration>
             <sourceDirectory>src/main/resources/jasper</sourceDirectory>
            <outputDirectory>${project.build.directory}/jasper</outputDirectory>
                <compiler>net.sf.jasperreports.engine.design.JRJavacCompiler</compiler>
            </configuration>
          <dependencies>
           <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>4.5.1</version>
           </dependency>
          </dependencies>
        </plugin>