我在使用IntelliJ中的Maven练习时遇到了一些问题,并且我的类路径中的资源文件不会被包含在构建的JAR中。
我的模块结构:
src/main/java/com/abc/Main.class
src/main/java/com/abc/Messages.class
src/main/java/com/abc/messages_en.properties the not included resource files.
src/main/java/com/abc/messages_es.properties
src/main/resources/ misc resources
项目构建成功,但是当我运行JAR文件时,我会收到如下错误消息。当我解压缩JAR文件时,缺少messages_xx.properties文件。
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name com.abc.messages, locale en
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:845)
at org.jis.Messages.<init>(Messages.java:42)
at org.jis.Main.main(Main.java:205)
我的pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<includes>
<include>${basedir}/src/main/java/com/abc/*.properties</include>
</includes>
<archive>
<manifest>
<mainClass>com.abc.Main</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
在SO上遇到过许多类似的线程,但解决方案似乎不适合我的情况。有什么建议吗?我一直试图弄清楚为什么会发生这种情况一段时间但尚未找到答案。如果有人能给我一些提示,那就太好了。非常感谢。
答案 0 :(得分:0)
Maven希望找到
src/main/java/com/abc/messages_en.properties
src/main/java/com/abc/messages_es.properties
在
src/main/resources/com/abc/messages_en.properties
src/main/resources/com/abc/messages_es.properties
src/main/java
中的资源文件无法在生成的jar文件中完成,因为
maven-compiler-plugin编译java源并将它们输出到target/classes
来自'src / main / resources into
target / classes`的maven-resources-plugin副本(可能是过滤器)文件(包括其目录结构)
然后maven-jar-plugin根据target/classes
因此,只需移动您的属性文件,然后停止与maven way
服务进行摔跤。