如何配置maven以便maven exec插件可以访问'src /'之外的目录中的配置文件

时间:2014-09-16 18:08:14

标签: java maven classpath executable-jar exec-maven-plugin

我正在使用

访问我的代码中的属性文件
    ClassName.class.getClassloader().getResourceAsStream("config/config.properties"));

    this.getClass.getClassloader().getResourceAsStream("config/config.properties");

如果属性文件位于资源目​​录中,一切正常,我使用maven exec插件运行该程序没有任何问题。我只需要打电话

    mvn exec:java -Dexec.mainClass="MyMainClass"
但这种方法作为一个很大的劣势。它包括属性文件

如何更改maven配置,以便'config / config.properties'文件可用于maven exec插件而不在'src'内且不包含在jar中?

注意:只是为了澄清,我不知道应用程序在生产中运行时必要的配置文件在哪里。我只知道它在类路径中。这就是我需要使用getResourceAsStream()的原因,我不需要将它包含在jar文件中。

1 个答案:

答案 0 :(得分:1)

如果您使用getClassloader().getResourceAsStream(),则表示您正在尝试访问类路径上可用的文件。但是,您指的是不在类路径上的文件。所以你必须选择:

  • 将config-folder添加到类路径中。您可以向<resource>添加pom.xml,但效果与src/main/resources/config/config.properties完全相同。
  • 不要从类路径文件中读取属性,而是从已知位置的文件中读取属性。这将是我的首选解决方案。对于这个解决方案,我想参考另一个链接。在您的情况下,您可以将其添加为参数,从public static void main(String[])中选择它。或者从new File("config/config.properties")读取它,这是有效的,因为它是相对于执行根计算的。