java - 使用 Maven(和 Eclipse)管理 Jar 文件外部的资源

标签 java eclipse maven jar

我觉得我在绕圈子,所以希望它是相对容易解决的问题。

对于我正在开发的应用程序,我想要一组包含配置信息的 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/

相关文章:

java - 非抽象类中的抽象方法

java - 无法将目录从 Eclipse(Helios) 复制并粘贴到 Windows

java - 在一个 JUnit 的 pom 和 openjdk6 中使用 1.6 时出现不支持的主要版本 51.0 错误

java - Android WebView 的阅读器模式

java - 将图标放入 JTable 单元格会更改其背面颜色

java - 我可以使用 Flex Builder 进行 Java 编程吗?

java - 如何关闭嵌入式 Jetty(Eclipse 项目)?

java - 如何使用 VM 选项运行测试单元

java - 禁用 Sonar 中的最大继承深度

java - <beans :beans> and <beans> 是什么意思