6

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

对于我正在开发的应用程序,我想要一组包含配置信息的 XML 文件。而且我希望这些是可编辑的,而无需重新编译 jar 文件。因此,我想要将它们放在与 jar 文件位于同一文件夹中的名为 resources 的文件夹中。所以我的预期结构类似于

root
|
- app.jar
|
- resources
  |
  - config
    |
    - config1.xml
    - config2.xml

我已经设法调整我的 pom.xml 以便它将资源复制到我的目标文件夹中copy-resources使用maven-resource-plugin.

我还使用添加了我的资源目录作为资源(以便它在 eclipse 中工作)

<resources>
    <resource>
        <directory>resources</directory>
    </resource>
</resources>

这样我就可以使用

getClass().getResource("/config/xml/config1.xml");

并使用 maven-jar-plugin 中的 manifestEntries 将我的资源目录包含在 jar 清单的类路径中(我认为)。

<manifestEntries>
    <Class-Path>. resources</Class-Path&>
</manifestEntries>

并试图排除我的资源被编译成 jar 文件使用

<configuration>
    <exclude>resources/**/*.xml</exclude>
</configuration>

它们仍在编译到 jar 文件中。如果我手动将它们从 jar 文件中删除,那么在尝试访问资源时会出现空指针异常。

所以我想要实现并且需要帮助弄清楚的是一种方法来获取我上面粗略概述的外部资源的结构,这些外部资源没有编译到 jar 文件中,但可以通过代码访问(通过类路径)在同一根目录中的一个 jar 中,它仍然在 eclipse 中起作用。

任何帮助或指导将不胜感激。

4

2 回答 2

0

你错过了标签excludes

<configuration>
    <excludes>
       <exclude>resources/**/*.xml</exclude>
    </excludes>
</configuration>
于 2013-10-07T19:40:45.240 回答
0

您可以像这样复杂地排除所有文件夹:

<excludes>
        <exclude>config/</exclude>
</excludes>

或者只是配置中的所有 xml 文件

 <excludes>
     <exclude>**/config/*.xml</exclude>
 </excludes>
于 2016-01-11T16:58:43.570 回答