Импорт пользовательских классов в 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>

По умолчанию плагин запускается на этапе создания ресурсов, прежде чем классы текущего модуля будут скомпилированы. Вы можете изменить плагин для запуска на этапе компиляции. Смотрите примечания внизу страницы здесь:

Кроме того, смотрите этот похожий вопрос:

Другие вопросы по тегам