为Tomcat自定义WAR部署

时间:2017-10-18 14:23:10

标签: java spring maven tomcat

我正在使用Maven的Spring Framework(Spring Boot)。我在Tomcat 8.5上部署(手动).war。我的应用程序出售给多个客户。

我有2个配置文件。主应用程序.yml包含所有安装通用的选项,以及每个安装唯一的application-custom.yml(数据库凭据,邮件等)。当我更新我的war包时,不得删除此自定义配置文件(Tomcat会删除配置文件并用最新的战争替换它)。但是我不想在每次更新时都用新的替换自定义文件。

要修复它,我的Spring配置文件实际上(手动)复制到Tomcat的webapps路径中(在更新时不会被删除):

  

C:\ Program Files \ Apache Software Foundation \ Tomcat 8.5 \ webapps \ application-custom.yml

但这不是我猜的最佳解决方案。因为在每次新安装时,我都必须自己创建自定义配置文件。有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

在每次启动时,您都可以将配置文件移动到安全位置,例如/webapps/configs,并在Tomcat提取后.war文件将您的配置移回。 为此,您需要修改bin文件夹中的catalina.sh。在这一行之后:

elif [ "$1" = "start" ] ; then

添加此项以将配置移至安全的地方

cp $CATALINA_HOME/webapps/myApp/WEB-INF/classes/your_config.yml $CATALINA_HOME/webapps/configs

之后:

  if [ ! -z "$CATALINA_PID" ]; then
    echo $! > "$CATALINA_PID"
  fi

  echo "Tomcat started."

添加以下内容以将配置移回该位置:

cp $CATALINA_HOME/webapps/configs/your_config.yml $CATALINA_HOME/webapps/myApp/WEB-INF/classes

之后使用catalina.sh start

启动Tomcat