wagon(瓦工)插件是一个很不错的轻量级,快速部署项目到服务器的插件,针对用中小项目,使用起来十分方便。今天跟大家分享一下自己在使用过程中遇到的一个坑,持续两天时间都没能够解决,最终在多方求助下找到最终原因。
问题状况
在服务器上直接执行start.sh启动脚本,springboot可以正确启动并且正确加载了同目录级下的application-pro.yml文件。
通过wagon执行服务器上同样一个脚本进行springboot项目的启动。在启动的过程中发现一个很奇怪的现象。就是springboot读取的不是同目录下的application-pro.yml文件,而是jar包内的配置文件。
问题追踪
期初以为是jdk环境变量问题,就在脚本中export了一遍环境变量,结果没什么效果。然后,在脚本中直接 source /etc/profile,问题依旧存在。隐隐约约中感觉是环境的问题导致,但却始终找不到真正的原因。
求助解决
求助朋友,朋友说“wagon会不会没有cd到目标目录?”。一语惊醒梦,在脚本中现在通过cd命令,进入到start.sh目录,然后再执行start.sh命令,问题完美解决。
基本原因就是通过wagon执行脚本使用的是绝对路径,而通过绝对路径去执行start.sh启动springboot,springboot无法定位到同目录级下的配置文件,因此无法加载,按照默认的优先级就去寻找项目内的配置文件了。