我觉得我在绕圈子,所以希望它是相对容易解决的问题。
对于我正在开发的应用程序,我想要一组包含配置信息的 XML 文件。我希望这些可以编辑,而无需重新编译 jar 文件。所以我想要的是将它们放在一个名为 resources 的文件夹中,该文件夹与 jar 文件位于同一文件夹中。 所以我的预期结构是这样的
root
|
- app.jar
|
- resources
|
- config
|
- config1.xml
- config2.xml
我已设法调整我的 pom.xml,以便它使用 maven-resource-plugin
中的 copy-resources
将资源复制到我的目标文件夹中。
我还使用
将我的资源目录添加为资源(以便它在 eclipse 中工作)<resources>
<resource>
<directory>resources</directory>
</resource>
</resources>
这样我就可以使用
getClass().getResource("/config/xml/config1.xml");
并使用 maven-jar-plugin 中的 manifestEntries 将我的资源目录包含在 jar list 的类路径中(我认为)。
<manifestEntries>
<Class-Path>. resources</Class-Path&>
</manifestEntries>
并尝试使用
排除我的资源被编译到 jar 文件中<configuration>
<exclude>resources/**/*.xml</exclude>
</configuration>
它们仍在被编译到 jar 文件中。如果我手动将它们从 jar 文件中删除,那么在尝试访问资源时会出现空指针异常。
所以我正在努力实现并需要帮助弄清楚的是 一种获取我在上面粗略概述的外部资源结构的方法,这些外部资源没有编译到 jar 文件中,但可以通过同一根目录中的 jar 中的代码访问(通过类路径)并且仍然在 eclipse 中运行。
如有任何帮助或指导,我们将不胜感激。
最佳答案
你错过了标签 excludes
<configuration>
<excludes>
<exclude>resources/**/*.xml</exclude>
</excludes>
</configuration>
关于java - 使用 Maven(和 Eclipse)管理 Jar 文件外部的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19233020/