繁体   English   中英

如何配置Maven,以便Maven exec插件可以访问“ src /”外部目录中的配置文件

[英]How do I configure maven so that the maven exec plugin can access a config file in a directory outside 'src/'

我正在使用以下代码访问属性文件

    ClassName.class.getClassloader().getResourceAsStream("config/config.properties"));

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

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

    mvn exec:java -Dexec.mainClass="MyMainClass"

但是这种方法有很大的缺点。 它包括属性文件

我如何更改Maven配置,以便Maven exec插件可以使用'config / config.properties'文件,而无需将其放置在'src'中,也无需将其包含在jar中?

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

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

  • 将配置文件夹添加到类路径。 您可以通过在pom.xml添加<resource>来实现,但是效果与src/main/resources/config/config.properties完全相同。
  • 不要从类路径文件中读取属性,而是从已知位置的文件中读取属性。 这将是我的首选解决方案。 对于此解决方案,我想参考其他链接。 在您的情况下,可以将其添加为参数,然后从public static void main(String[])选取它。 new File("config/config.properties")读取它,因为它是相对于执行根进行计算的,因此可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM