我在Linux发行版中运行spring boot应用程序作为服务。通常我为胖罐做一个符号链接,并创建指向符号链接文件的服务
-rw-r--r-- 1 root root 152 Apr 19 13:53 bootstrap.yml
-rwxr--r-- 1 root root 59M Apr 11 12:39 common-service-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 17 Apr 24 10:55 common-service.conf
lrwxrwxrwx 1 root root 33 Apr 10 09:42 common-service.jar -> common-service-0.0.1-SNAPSHOT.jar
现在,当我启动该服务时,它无法识别common-service.conf
,但如果我将名称更改为common-service-0.0.1-SNAPSHOT.conf
,它确实可以正常运行
他们是一种使用符号链接文件名而不是实际文件名使弹簧启动读取配置文件的方法
答案 0 :(得分:0)
我确实在春季启动时更新了launch.script,如同PR一样。
基本上我所做的就是保存原始文件名originalconfigfile="$(basename "${jarfile%.*}.conf")"
然后如果一个conf文件与originalconfigfile存在,请使用它,如果不检查真实的那个
[[ -r "${CONF_FOLDER}/${originalconfigfile}" ]] && source "${CONF_FOLDER}/${originalconfigfile}"
[[ ! -r "${CONF_FOLDER}/${originalconfigfile}" ]] && [[ -r "${CONF_FOLDER}/${configfile}" ]] && source "${CONF_FOLDER}/${configfile}"
然后我在pom中使用了这个更新的脚本
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<embeddedLaunchScript>launch.script</embeddedLaunchScript>
</configuration>
<executions>
<execution>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>