2014-10-09 62 views
1

我的Java项目被细分为单个任务构件(由collagues编写)和我自己开发的“收集器”构件,全部使用Maven运行。Maven:如何解决打包在JAR中的目录中的配置文件

在我的pom.xml文件

通常是由几个依赖组成:

<dependencies> 
     <dependency> 
      <groupId>org.foo.project1</groupId> 
      <artifactId>project1</artifactId> 
      <version>4.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.foo.project2</groupId> 
      <artifactId>project2</artifactId> 
      <version>1.5.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.foo.project3</groupId> 
      <artifactId>project3</artifactId> 
      <version>2.0.0</version> 
     </dependency> 
</dependencies> 

所以说,项目2例如不仅.class文件包在src /目录和.xml和其他的东西在资源/目录,但是例如资源/包含用于各种目的的一些其他文本文件(例如预设)。

我想解决我的“收藏”工件代码中的其中一个物理文件。 这是因为在我的代码的某个点上,我想调用一个类的方法,该类从“project2”类路径进行编译,因此在物理上来自“project2”JAR;

虽然类层次结构与调用一致,但附件文件不是。如果在我的Java代码中寻址我想用作“resources/name.txt”的文件名,JVM相信要在我的“收集器”工件资源/目录中搜索该文件,这是错误的 - 我真的希望它指向[project2.jar] /resources/name.txt。

如何正确解决打包在project2 jar文件中的文件?

非常感谢!

回答

2

如果你想读取你已经放在资源目录中的文本文件,你只需要记住,maven把文件放在资源目录中没有改变的jar。所以,你可以问的ClassLoader把它给你的资源:

InputStream is = getClass().getClassLoader().getResourceAsStream("/data/name.txt"); 

将寻找一个名为name.txt文件,您最初投入src/resources/data

+0

它的工作原理,谢谢!实际上,以URL格式使用.getResource()对我来说更有用,但您已经确定了解决方案。 – CaptainPhlegm 2014-10-09 15:59:26

相关问题