java - 如何让 tomcat 从目录自动部署 WAR 文件,但仍使用原始 appBase 目录

标签 java raspberry-pi tomcat9 java-ee-8 raspberry-pi-zero

我需要在嵌入式解决方案中部署我的应用程序(在树莓派零上运行)。因此,我只能在本地主机上部署东西。我对虚拟主机不太熟悉,所以我可能错了。

我的问题是我希望 tomcat 自动部署包含在我克隆到 raspberry pi 的 git 存储库中的 war 文件。这样就可以轻松地对 git 存储库进行更新,而不必与管理器打交道。话虽如此,我还希望让管理器和其他管理工具保持 Activity 状态并正常工作,这些工具包含在默认的 webapps 目录中。将这些复制到 git 存储库中并不是我想做的事情,因为它们会被放错位置并保存在没有必要的存储库中。此外,我希望 tomcat 能够“分解”或提取原始 webapps 目录中的 WAR 文件,以免将这些文件添加到 git 存储库中。

基本上,我希望能够自动部署某个目录中的所有 war 文件,而无需实际写入该目录,同时还自动部署“标准”webapps 目录中的 war 文件。

这可能吗?

我使用的是tomcat9

最佳答案

解决方案 A:

Tomcat 9 只有一个 appBase 属性,默认是 webapps .为了改变你需要配置 2 Common attributes :

1.appBase:将此参数设置为需要部署的war所在的文件夹。
2.autoDeploy:确保设置为true。

不可能有 2 个 appbase 目录。所以原始的 webapps 不能用于自动部署。

解决方案 B:

使用脚本从 GIT 存储库中提取 WAR,这也会将文件复制或移动到 Tomcat9 的标准 webapps 文件夹。
例如

git pull rm path/to/tomcat/webapps/warname.war  
mv warname.war
path/to/tomcat/webapps

解决方案 C:

将您的 GIT 存储库或另一个 GIT 存储库配置为仅包含具有所需 war 的 webapps 文件夹。如果您仅使用此文件夹从 GIT 存储库中提取 war,则无需提交默认的 Tomcat 应用程序。请参阅以下步骤。
vanilla 开始Tomcat 9 安装
  • 重命名 webappswebappsOriginal
  • 克隆 webapps存储库以便另一个 webapps现在已创建文件夹,其中仅包含 war。
  • 移动webappsOriginal的所有内容至 webapps .
  • 删除 webappsOriginal

  • 现在,如果您从存储库中提取更新的 war ,将获取并自动部署。
    没有理由在您的 GIT 中添加、提交或推送预先存在的文件。

    关于java - 如何让 tomcat 从目录自动部署 WAR 文件,但仍使用原始 appBase 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61660980/

    相关文章:

    java - AbstractCreatorProcessor 类未找到错误

    java - 如何将变量的值从一个文件发送到另一个文件?

    linux - 树莓派 : Does the framebuffer image viewer (FBI) display gifs?

    java - 如何在 JFrame 中设置 JPanel 的大小?

    html - 如何在自己的 html 中使用 mjpg-streamer?

    python-2.7 - 在 Python 2.7.3/Raspberry Pi 中使用特殊字符转义 HTML

    java - Tomcat 9 keystore 密码无效

    java - Thymeleaf Spring MVC 的 UTF-8 编码问题

    java - 如何通过 Spring Webflux 中的 websockets 向特定客户端发送消息?

    java - Spring JPA : When I delete an entity, 相关实体也被删除