Импорт пользовательских классов в jrxml и компиляция с плагином maven
Мне нужно импортировать несколько пользовательских классов Java в файл JRXML JasperReports.
Я могу сделать это с помощью
<import value="org.ga.jasper.sample.MyCustomClass"/>
Это прекрасно работает, и я могу запустить этот jrxml и проверить мой код.
Проблема возникает, когда я хочу предварительно скомпилировать это в файл.jasper с помощью jasperreports-maven-plugin.
При сборке он жалуется, что не находит мой пакет и, следовательно, импорт недопустим.
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 ответа
Вот как я решил проблему. Добавление фазы
<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>
По умолчанию плагин запускается на этапе создания ресурсов, прежде чем классы текущего модуля будут скомпилированы. Вы можете изменить плагин для запуска на этапе компиляции. Смотрите примечания внизу страницы здесь:
Кроме того, смотрите этот похожий вопрос: