之前公司的springboot项目直接用内置的tomcat容器来启动,因此要实现spring配置文件切换直接在启动服务的时候加 -Dspring.profiles.active
参数就可以切换yml里的配置了,比如:
application.yml文件:
spring: profiles.active: oracle-test --- spring: profiles: mysql-test --- spring: profiles: oracle-test --- spring: profiles: oracle-pro
java -Duser.timezone=Shanghai -Dspring.profiles.active=oracle-test -jar XX.jar
可是现在新起的一个项目要把前端代码和后端代码部署到一个tomcat里,上面方法不能用了,研究了一下可以通过修改tomcat/bin文件夹里的catalina.sh文件(windows系统为catalina.bat)来实现。详细如下:
因为不同tomcat版本对应代码的行数不同,直接打开catalina.sh文件搜索JAVA_OPTS,找到类似如下部分:
# Register custom URL handlers # Do this here so custom URL handles (specifically 'war:...') can be used in the security policy JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
在后面添加 -Dspring.profiles.active=$2 ,把第二个参数作为spring配置文件名:
# Register custom URL handlers # Do this here so custom URL handles (specifically 'war:...') can be used in the security policy JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dspring.profiles.active=$2"
保存然后后面启动tomcat的时候指定参数就可以了,不指定参数就会使用默认配置文件:
./catalina.sh run oracle-pro