【发布时间】:2011-07-14 14:50:51
【问题描述】:
在我的 Maven 项目中,有一个模块(核心)为其类提供了一些资源。在模块内运行类时,它能够获取自己的资源。一切正常。
当依赖于核心的另一个模块尝试运行该类时,东西会中断。 Java 在其中寻找资源的文件夹是这个模块,而不是核心模块。所以课程失败了。
简而言之:如何访问依赖项的资源?
我已经尝试通过在 Core 的 JAR 清单中声明 Class-Path: . 来尝试做到这一点。但是,当列出JSHookLoader.class.getClassLoader().getResources(""); 可用的资源时(如果有任何意义,JSHookLoader 在核心中),我得到:
Resource: W:\programming\quackbot-hg\impl\target\classes
File rebel.xml
Resource: W:\programming\maven-repo\org\quackbot\core\3.5-SNAPSHOT
File core-3.5-SNAPSHOT.jar
File core-3.5-SNAPSHOT.pom
File maven-metadata-local.xml
File _maven.repositories
这当然会使事情复杂化,因为我希望 JAR 本身位于类路径中,而不是 JAR 所在的目录
有什么建议吗?
回到这个项目我仍然有这个问题。其他指南已经讨论过使用 maven-assembly-plugin 和远程资源插件,但这很痛苦,因为所有模块都必须包含怪物插件 XML。
我为什么不将问题简化为:如何将依赖项 JAR 添加到资源列表?
- core.jar 在文件夹/resources 下有一些资源。运行 core.jar 我可以在资源列表中看到 /resources。
- impl.jar 依赖于 core.jar。虽然 /resources 不在资源列表中,但在运行时会造成严重破坏。
这应该很简单,但我该怎么做呢?我花了几个小时试图找出一个简单干净的方法来做到这一点,但无济于事。
【问题讨论】: