Tenho um projeto Maven (swing) no Eclipse e sempre coloco todos arquivos extras como .properties e outros como o arquivo xml do jasper reports (.jrxml) dentro da pasta resources (src/main/resources).
Há uma classe onde desenho a visualização do formulário (javax.swing.JInternalFrame) que fica no pacote br.com.editoraw.graficaos.apresentacao, e este pacote por convenção do maven fica dentro do diretório src/main/java.
Nesta classe visual tenho um método que é responsável por carregar o arquivo .jrxml compilá-lo dentro de uma classe do pacote do jasper reports e fazer toda a geração do relatório e exportar para pdf.
O problema em si consiste no momento de carregar o arquivo jrxml. Atualmente faço da seguinte forma:
(...)
private static final String CAMINHO_RELATORIO = "/Relatorio.jrxml";
(...)
private void exportarRelatorio() {
(...)
Path caminhoRelatorio = null;
OutputStream outputStream = null;
try {
final URL systemResource = Thread.currentThread().getClass().getResource(CAMINHO_RELATORIO);
if (systemResource == null) {
JOptionPane.showMessageDialog(...);
return;
}
caminhoRelatorio = Paths.get(systemResource.toURI());
if (! (Files.exists(caminhoRelatorio))) {
JOptionPane.showMessageDialog(...);
return;
}
} catch (final URISyntaxException e) {
(...)
} catch (final FileNotFoundException e) {
(...)
} catch (final JRException e) {
(...)
} catch (final ClassNotFoundException e) {
(...)
} catch (final SQLException e) {
(...)
} catch (final IOException e) {
(...)
}
}
...
}
Na rotina acima o arquivo é encontrado corretamente, e a variável systemResource aponta para a url: …projeto/target/classes/Relatorio.jrxml, que é exatamente o diretório de saída do build que o Maven faz.
O problema acontece depois que o executável jar é gerado pelo Maven, usando o comando: $ mvn clean package. Assim quando executo a aplicação diretamente pelo .jar, o arquivo .jrxml não é localizado.
Para complementar, o build dentro do arquivo pom.xml está configurado da seguinte forma:
(...)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<fork>true</fork>
<encoding>iso-8859-1</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>br.com.editoraw.graficaos.apresentacao.main.MenuAplicacao</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
(...)
Alguém tem uma solução sem fazer gambiarras ? Alguém já passou por problema semelhante e pode me auxiliar ?
Desde já agradeço ao pessoal do fórum.