如何在运行时从类路径引用配置文件(在IDE中)

时间:2016-12-08 12:09:15

标签: java spring maven intellij-idea resources

我正在接管maven / spring应用程序,其中配置文件不在类路径上。即,配置文件夹由jar旁边的maven-assembly-plugin复制,以便在部署应用程序时简化配置。

我的问题是我需要这些配置文件从我的IDE(intelliJ)中运行这个应用程序,当然,Spring正在抱怨

Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist

程序集采用“application-prod”或“application-test”.properties,具体取决于打包时使用的maven配置文件,并将其作为“application.properties”复制到/ config文件夹中,因此旁边的广口瓶中。

我的问题是: 在Intellij中运行应用程序时,我应该怎么做才能在类路径中提供这个“application.properties”文件(理想情况下取决于maven配置文件),而不会搞乱项目结构?

我想将属性文件作为参数提供给启动器可能是一个解决方案,但我不知道如何。

所以这是简化的项目结构:

|-- src/
|   |-- main/
|   |   |-- assembly/
|   |   |   |-- bin.xml
|   |   
|   |   |-- config/
|   |   |   |-- images/
|   |   |   |-- application-prod.properties
|   |   |   |-- application-test.properties
|   |   
|   |   |-- java/...
|   |   |   |-- gui/
|   |   |   |   |-- Application.java
|   |   
|   |   |-- resources/
|   |   |   |-- context/
|   |   |   |   |-- context.xml
|   |   
|   |   |   |-- fxml/
|   |   |   |   |-- welcome.fxml
|   |   
|   |   |   |-- gui.properties
|   |   
|-- pom.xml

非常感谢。

1 个答案:

答案 0 :(得分:0)

在没有多模块依赖关系的这种简单情况下,它可以成功。  您可以右键单击IntelliJ项目中的任何目录,选择“将目录标记为”,然后选择“源根”(或源资源根目录)。该目录文件夹将颜色从黄色变为蓝色(或将出现资源图标); IntelliJ将确保所有这些目录都在您的CLASSPATH中。

另请注意,您不应尝试在IDEA中向CP var明确添加smth。 Classpath在模块的Module Dependencies中配置。