我是一个相对新手,我正在尝试构建一个接受外部配置文件的应用。我用spring工具套件编写它并用Maven编译它。
我有一个src / main / java文件夹,其中包含包含所有类的包以及生成.jar文件的目标文件夹。
我试图在外部配置上使用他们的指南:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
我将在./target中创建/ config文件,然后右键单击>新>我将命名" application.properties。"一旦我尝试与它进行交互,我立即警告这是一个派生文件。
在application.properties中,我把:
spring.application.name = "hello"
在文件结构中其他地方的静态类中,我把:
@Value("${name}")
public static String name;
当我打包并运行.jar时,它不仅无法检索name属性,而且.properties文件有时会删除/ config文件夹!
我为了让Maven删除我的.properties文件而中断了什么?
答案 0 :(得分:0)
你必须在WEB-INF文件夹中创建属性文件,并将属性文件路径和bean配置为ApplicationContext.xml
。
<bean id="configProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="WEB-INF/test-config.properties" />
</bean>
答案 1 :(得分:0)
如果您在target
文件夹中创建文件,则会不时删除该文件。目标文件夹中的内容由Maven不时销毁/创建,因为它的目标是包含构建的结果。当您通过示例发出clean package
命令时,Maven将销毁target
中的内容,然后重建您的应用。
我相信您应该在scr/main
文件夹中创建属性文件,以便将其保留在项目中,但是您必须弄清楚属性文件在应用程序的类路径中的可见性
由于您正在运行jar,因此可以在java命令行中添加一个参数(尝试检查IDE中的运行配置),添加将保留属性文件的文件夹。
答案 2 :(得分:0)
将文件放入目标文件夹确实会删除它们。
答案 3 :(得分:0)
当我从插件中删除配置部分时,它停止删除 application.properties 文件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>true</addResources>
</configuration>
</plugin>
然后我有了这个:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>