IDEA 中 Tomcat 部署 Java Web 项目

一、环境准备(通用基础)

1. 核心环境
  • JDK :确保安装 JDK 1.8+(示例用 1.8 Oracle OpenJDK),通过 java -version 验证。
  • Tomcat :本地安装 Tomcat 8.5+(如 apache-tomcat-8.5.29),记住安装目录(后续配置用)。

二、场景 1:Maven 多模块 Java Web 项目部署

1. 项目特征
  • 含 pom.xml,通过 Maven 管理依赖和多模块(如父模块 hami_parent + 子模块 hami_protal)。
  • 构建流程:clean → install 自动编译、打包,适合复杂聚合项目。

依次为每个部分添加本地tomcat-server

修改名字,热部署,端口号,jdk

这里添加相应的

点击apply ->ok 运行tomcat

(2)Maven 构建:生成 War 包
  • 右侧打开 Maven 面板 ,找到父模块(如 hami_parent [root]):
  • 先双击 Lifecycle → clean(清理旧构建产物)。
  • 再双击 Lifecycle → install(编译代码 → 打包成 war → 安装到本地仓库)。
  • 控制台输出 BUILD SUCCESS 后,检查子模块 target 目录,生成 xxx.war 和 xxx.war exploded(部署用解压包)。

(3)将生成的war包与jar包一并复制到tomcat的webapps路径下

4)配置server.xml文件

将下面的代码插入到server.xml文件中,注意这是我们自定义的<Service>,要与 自带的分开,防止嵌套

XML 复制代码
<Service name="Catalina1">
    <!-- 每个项目的端口号也要进行区分,保证不被占用 -->
    <Connector port="8083" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URLEncoding="UTF-8"/>
    <!-- 这里的AJP端口同样也要进行区分 -->
	<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>
    <Engine name="Catalina1" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
 
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            <!-- 这里是想要部署的对应项目的名称 -->
		    <Context docBase="hami_console-1.0-SNAPSHOT" path="/" reloadable="true"/>
      </Host>
    </Engine>
  </Service>
  
  <Service name="Catalina2">
    <!-- 每个项目的端口号也要进行区分,保证不被占用 -->
    <Connector port="8084" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URLEncoding="UTF-8"/>
    <!-- 这里的AJP端口同样也要进行区分 -->
	<Connector port="8012" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>
    <Engine name="Catalina1" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
 
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            <!-- 这里是想要部署的对应项目的名称 -->
		    <Context docBase="hami_file-1.0-SNAPSHOT" path="/" reloadable="true"/>
      </Host>
    </Engine>
  </Service>
    <Service name="Catalina3">
    <!-- 每个项目的端口号也要进行区分,保证不被占用 -->
    <Connector port="8085" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URLEncoding="UTF-8"/>
    <!-- 这里的AJP端口同样也要进行区分 -->
	<Connector port="8013" protocol="AJP/1.3" redirectPort="8443" secretRequired=""/>
    <Engine name="Catalina1" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
 
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            <!-- 这里是想要部署的对应项目的名称 -->
		    <Context docBase="hami_protal-1.0-SNAPSHOT" path="/" reloadable="true"/>
      </Host>
    </Engine>
  </Service>

5)启动tomcat

端口号启动成功:

并且 webapps目录下生成了相应的war,jar包目录,现在我们就可以 url直接访问我们的项目

部署成功

相关推荐
vx_Biye_Design6 分钟前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
Sweet锦1 小时前
不调 Python,不装向量库:我用纯 Java 写了一套以图搜图引擎
java·人工智能·开源·图搜索
如意猴2 小时前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
可乐鸡翅yeah_2 小时前
HLS 分片过期清理,直播旧 TS 分片磁盘爆满问题处理
java·后端·spring·m3u8·m3u8在线·音视频在线播放
专业程序开发源3 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
用户094248568033 小时前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu3 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
樱花落木兰3 小时前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
HAHAXX83 小时前
电商RPA批量上架通用方案:一套流程如何同时跑通拼多多、抖店、淘宝和跨境平台
java·运维·rpa
\光辉岁月/3 小时前
3.java运算符
java·开发语言