Maven中使用Jasper Reports编译.jrxml文件时(使用jasperreports-maven-plugin)时,有什么方法可以指定使用哪个版本的Java?我看到这篇博文说,Jasper 使用"计算机中设置的默认虚拟机"而不是"相同版本的 maven-compiler-plugin"。如果我无法更改或保证JAVA_HOME环境变量,如何让 Jasper 使用 Java6 进行编译?
这是我的pom的一个片段.xml:
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jasperreports-maven-plugin</artifactId>
<version>1.0-beta-2</version>
<configuration>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compile-reports</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.0.1</version>
</dependency>
</dependencies>
</plugin>
<plugin>
</plugins>
查看Codehaus文档,有一个您可以使用的参数,但它没有说明如何指定哪个Java版本。
谢谢!
根据此问题,以下参数可以帮助您:
<configuration>
...
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<compiler>net.sf.jasperreports.engine.design.JRJdtCompiler</compiler>
...
</configuration>
但是,1.0-beta-2 没有这些属性,因此需要更高版本。您可以从这里使用快照插件版本,也可以自己从源代码构建插件。据我所知,来自 trunk 的插件代码支持这些参数。
我不得不进行一些额外的配置:
- 将 Eclipse:JDTcore 设置为 JasperreSports 中的排除项;
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.6.0</version>
<exclusions>
<exclusion>
<groupId>eclipse</groupId>
<artifactId>jdtcore</artifactId>
</exclusion>
</exclusions>
</dependency>
- 将
org.eclipse.jdt.core.compiler:ecj
设置为插件依赖项;
Jasperreports-maven-plugin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jasperreports-maven-plugin</artifactId>
<version>1.0-beta-4-OPENNMS-20160912-1</version>
<configuration>
<outputDirectory>src/main/webapp/WEB-INF/reports</outputDirectory>
<maven.compiler.source>${compileSource}</maven.compiler.source>
<maven.compiler.target>${compileSource}</maven.compiler.target>
<compiler>net.sf.jasperreports.engine.design.JRJdtCompiler</compiler>
</configuration>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>compile-reports</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>net.sf.barcode4j</groupId>
<artifactId>barcode4j</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
注意:插件jasperreports-maven-plugin
的依赖顺序与我相关(不要问我为什么)。