Maven:添加外部资源

我正在用maven构建一个可执行的jar文件,这意味着你用“java -jar file.jar”运行它。

我想依赖于用户定义的属性(只是一个包含键/值的文件),在开发阶段我将我的“user.properties”文件放在maven / src / main / resources /文件夹中。

我的属性文件加载了:

final Properties p = new Properties(); final InputStream resource = IOParametres.class.getResourceAsStream("/user.properties"); p.load(resource); 

现在,我想将该文件保留在JAR之外,并且具有以下内容:

 - execution_folder |_ file.jar |_ config |_ user.properties 

我用maven插件尝试了很多东西,比如maven-jar-plugin,maven-surefire-plugin和maven-resources-plugin但是我无法让它工作……

在此先感谢您的帮助!

我只使用maven配置找到了我需要的东西。

首先,我将config文件夹添加到类路径:

    org.apache.maven.plugins maven-jar-plugin 2.3.1    config/       

我以与以前相同的方式加载资源:

 final InputStream resource = IOParametres.class.getResourceAsStream("/user.properties"); p.load(resource); 

如果您想将示例资源文件保留在repo中并从构建中删除它们:

    src/main/resources  user.properties conf/hibernate.cfg.xml     

在jar文件旁边,我添加了一个包含我需要的所有资源文件的配置文件夹。

结果是:

  • user.properties可以使用getResourceAsStream加载
  • 其他依赖特定资源的图书馆(我不会争辩,但我觉得……不是那么好)可以毫无问题地加载他们的资源。

感谢您的帮助,我希望有一天它可以帮助某人!

正如我在评论中提到的 – 看起来您希望将user.properties文件简单地用作除了jar之外的文本文件。 如果是这种情况,那么比使用它更简单 – 包含jar文件的目录是在运行时检查时的当前目录。 这意味着您只需要:

 properties.load(new FileInputStream("config/user.properties")); 

而不是试图投入项目类路径。

如果还有其他事情需要完成,只需将属性从资源目录复制到目标,以避免手动执行此操作。 这可以通过maven-antrun-plugin实现:

   org.apache.maven.plugins maven-antrun-plugin   generate-resources  run