0

我正在访问我的代码中的属性文件

    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 文件中。

4

1 回答 1

1

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

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