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

时间:2013-10-07 19:30:46

标签: java eclipse maven jar

我觉得我已经围成一圈,所以希望它能够相对容易地解决。

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

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

2 个答案:

答案 0 :(得分:0)

您遗失了标记excludes

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

答案 1 :(得分:0)

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

recyclerview-v7

或仅来自config

的所有xml文件
<excludes>
        <exclude>config/</exclude>
</excludes>