我正在使用
访问我的代码中的属性文件 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文件中。
答案 0 :(得分:1)
如果您使用getClassloader().getResourceAsStream()
,则表示您正在尝试访问类路径上可用的文件。但是,您指的是不在类路径上的文件。所以你必须选择:
<resource>
添加pom.xml
,但效果与src/main/resources/config/config.properties
完全相同。public static void main(String[])
中选择它。或者从new File("config/config.properties")
读取它,这是有效的,因为它是相对于执行根计算的。