Tenho uma aplicação maven desktop que lê um arquivo de properties no diretorio resources:
Quando executo método main pela IDE (InteliJ) o programa roda sem erros. Mas depois de empacotar e rodar com maven-exec-plugin:
mvn exec:java
Ele não acha o arquivo properties e dá NullPointerException
java.lang.reflect.InvocationTargetException
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:297)
at java.lang.Thread.run (Thread.java:834)
Caused by: java.lang.NullPointerException: inStream parameter is null
at java.util.Objects.requireNonNull (Objects.java:246)
at java.util.Properties.load (Properties.java:403)
at com.imdb.resource.proxy.Configuration.<init> (Configuration.java:28)
at com.imdb.service.httpclient.Connection.setUpConnection (Connection.java:43)
at com.imdb.service.httpclient.Connection.<init> (Connection.java:26)
at com.imdb.service.httpclient.Connection.getInstance (Connection.java:35)
at com.imdb.resource.proxy.IMDB_ProxyServer.<init> (IMDB_ProxyServer.java:16)
at com.imdb.resource.proxy.IMDB_ProxyServer.getInstance (IMDB_ProxyServer.java:25)
at com.imdb.main.Main.main (Main.java:11)
Trecho do código que lê o arquivo properties:
InputStream is = ClassLoader.getSystemResourceAsStream(IMDB_CLIENT_PROPERTIES);
Properties properties = new Properties();
properties.load(is); // NullPointerException quando roda via mvn exec:java
exec plugin no pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${exec.mainClass}</mainClass>
</configuration>
</plugin>
</plugins>
</build>
As classes de @Test também lêem o arquivo properties, mas na fase de testes não dá erro:
mvn clean package
roda os testes e empacota sem erros, mas mvn exec:java dá NullException
Alguém sabe o qque está faltando pra rodar o exec com sucesso?