使用一个依赖项的资源?
使用一个依赖项的资源?
在我的Maven项目中,有一个模块(core),它有一些用于其类的资源。在模块内运行类时,它能够获取自己的资源,一切都正常运作。
问题出现在另一个依赖于core的模块尝试运行该类时。Java在寻找资源的文件夹时会找到该模块,而不是core模块。因此,该类运行失败。
简而言之:我如何访问一个依赖项的资源?
我尝试通过在Core的JAR清单中声明Class-Path: .
来实现这一点。但是,当使用JSHookLoader.class.getClassLoader().getResources("");
列出可用资源时(如果有关系,JSHookLoader在Core中),我得到以下结果:
Resource: W:\programming\quackbot-hg\impl\target\classes 文件 rebel.xml Resource: W:\programming\maven-repo\org\quackbot\core\3.5-SNAPSHOT 文件 core-3.5-SNAPSHOT.jar 文件 core-3.5-SNAPSHOT.pom 文件 maven-metadata-local.xml 文件 _maven.repositories
当然,这使问题变得复杂,因为我期望JAR本身在类路径中,而不是JAR所在的目录。
有什么建议吗?
回到这个项目,我仍然有这个问题。其他指南提到了使用maven-assembly-plugin和remote resources plugin,但这会带来很多麻烦,因为所有模块都必须包含庞大的插件XML。
为什么不简化问题:如何将依赖项的JAR添加到资源列表中?
- core.jar中有一些资源,在文件夹/resources下。运行core.jar时,我可以在资源列表中看到/resources。
- impl.jar依赖于core.jar。但是在运行时,/resources不在资源列表中,因此造成了混乱。
这应该很简单,但我如何做到呢?我花了几个小时试图找到一个简单干净的方法,但没有成功。