繁体   English   中英

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

[英]Managing resources that will be external to a Jar file using Maven (and Eclipse)

我觉得我会围着这个圈子走,所以希望它能够相对容易地解决。

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

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清单的类路径中(我认为)。

<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>

您可以复杂地排除所有文件夹,如下所示:

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

或者只是来自config的所有xml文件

 <excludes>
     <exclude>**/config/*.xml</exclude>
 </excludes>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM