【问题标题】:Managing resources that will be external to a Jar file using Maven (and Eclipse)使用 Maven(和 Eclipse)管理 Jar 文件外部的资源
【发布时间】:2013-10-14 12:13:30
【问题描述】:

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

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

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 中起作用。

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

【问题讨论】:

  • 你是如何解决这个问题的?
  • 唉,我没能做到。它是一个个人项目,它稍微被搁置了,所以目前所有的配置都捆绑到了整个 jar 文件中。可能会在某个时候再看一遍,但我还没有弄清楚

标签: java eclipse maven jar


【解决方案1】:

你错过了标签excludes

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

【讨论】:

  • 嗨,谢谢,这是我没有注意到的。我确实将“”添加到我的 pom 中,但我仍然将资源包含在 jar 文件中。我目前正在工作,但今晚会尝试发布完整的 pom,以防有明显的问题
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-10-15
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多