我正在使用带有简单maven安装的maven构建一个jar。
如果我将文件添加到src/main/resources
,它可以在类路径中找到,但它有一个配置文件夹,我希望该文件可以进入,但是在config文件夹中移动它会使它从类路径中消失。
答案 0 :(得分:69)
将配置文件放入 src / main / resources 的子文件夹的更简洁的替代方法是增强类路径位置。使用Maven非常容易。
例如,将您的属性文件放在新文件夹 src / main / config 中,并将以下内容添加到您的pom中:
<build>
<resources>
<resource>
<directory>src/main/config</directory>
</resource>
</resources>
</build>
从现在开始, src / main / config 下的每个文件都被视为类路径的一部分(请注意,如果需要,可以从最终的jar中排除其中的一些文件:只需添加构建部分:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>my-config.properties</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
这样当您从IDE运行应用程序时,可以在类路径中找到 my-config.properties ,但在最终分发版中将保留在jar外部。
答案 1 :(得分:46)
如果您在src/main/resources
目录中放置任何内容,则默认情况下它将以最终*.jar
结尾。如果你从其他项目中引用它并且在类路径中找不到它,那么你就会遇到这两个错误中的一个:
*.jar
未正确加载(可能是路径中的拼写错误?)/src/main/resources/conf/settings.properties
在类路径中被视为classpath:conf/settings.properties
答案 2 :(得分:2)
By default maven does not include any files from "src/main/java".
You have two possible way to that.
1. put all your resource files (different than java files) to "src/main/resources" - this is highly recommended
2. Add to your pom (resource plugin):
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>