我们都知道最简单的部署web项目的方式是打成war包直接仍在tomcat的webapps目录下,我上个项目也确实是这样做的,可是这给我们后期的维护带来了极大的不便,下面就简单研究一下以war包部署和解开部署的区别。

1.以war包部署:(适用于全量部署)

  利用eclipse或者maven等工具可以直接生成war包,如下:

现在我们直接将它丢到tomcat的webapps目录下:(如果tomcat是启动状态也可以直接扔在下面,tomcat会自动扫描war包并解压)

查看解压后的目录结构:(相当于eclipse的webapp,我们写的代码编译之后放在WEB-INF的classes目录下,引用的第三方jar包在WEB-INF的lib目录下)

到此部署成功,可以直接访问。

现在假如我们的项目因为需求变化需要重新补丁,但是就是因为修改了几个类我们需要重新部署,方法:

    删除war包之后重新打包部署-----此方法肯定成功,但是效率极低。每次都得传输大量的jar包,只第三方的jar包就200M。

    而且我们删掉Exam.war之后tomcat会自动去掉Exam目录,也就是清除掉此项目。也就是此项目依赖于war包,给维护带来极大不便。

2.以目录的形式部署(尽量使用这种)

  • 在上面打好的war之后,将war包解压:

  •  将我们写的代码编译之后的class文件进行打包,打成jar包放到lib目录下。

(1)打包:  也就是将编译之后的class文件打包

liqiang@root MINGW64 ~/Desktop/新建文件夹 (2)/WEB-INF/classes
$ pwd
/c/Users/liqiang/Desktop/新建文件夹 (2)/WEB-INF/classes liqiang@root MINGW64 ~/Desktop/新建文件夹 (2)/WEB-INF/classes
$ jar cvf exam-1.0.jar ./cn

(2)删掉原来class文件将上面的jar放到WEB-INF\lib目录下

  • 将上面的文件夹放到webapps目录下启动tomcat即可

注意:此时WEB-INF目录下只有我们的配置文件,我们的class文件在上面打成jar包放到WEB\lib目录下。

  我认为这种方式部署的好处是可以增量部署,我们如果在后期修改bug之后代码变了我们只需要将我们编译之后的代码重新打成jar包传到服务器(只用传一个jar包),如果我们是增加功能我们可以生成新的jar包放到WEB\lib目录,如果增加了新的配置文件我们可以放到WEB-INF\classes目录下,当然配置文件也可以打在jar包中。

  也就是我们在项目部署的时候尽量使用目录部署,便于后期修复bug与增加功能,可以实现增量部署。

  

  mysql安装的时候也尽量使用集成安装的方式,便于控制,mysql集成安装参考:  https://www.cnblogs.com/qlqwjy/p/9484582.html

【项目部署】部署项目以war包部署和解开以目录部署的区别的更多相关文章

  1. Linux下部署tomcat及tomcat war包应用程序

    1, 通过winscp将tomcat包(6和7版本都是一样的安装方法)和jdk-6u27-linux-x64.bin安装文件传送到linux 系统/opt里面.(这里没有固定要传送到/opt/hn,可 ...

  2. (转)Linux下部署tomcat及tomcat war包应用程序

    原文:http://www.cnblogs.com/smallfa/news/2017/07/17/7193620.html 1, 通过winscp将tomcat包(6和7版本都是一样的安装方法)和j ...

  3. 彻底解决java WEB项目的文件路径问题(war包)

    在j2EE项目中,我们通常会把项目打包公布,通常是war包,作为独立单元,能够远程上传,载入,公布,还能够实现版本号控制,但这与我们开发过程中使用MyEclipse自己主动部署有所不同,下面做具体说明 ...

  4. springBoot 项目war包部署及改为war包后资源路径错误问题

    参考资料: https://blog.csdn.net/rico_zhou/article/details/83415114 https://blog.csdn.net/pz641/article/d ...

  5. Docker实现运行tomcat并部署项目war包,并实现挂载目录

    之前写的有点乱,现在再来整理一下docker的简单部署运行 借鉴博客:https://blog.csdn.net/qq_32351227/article/details/78673591 一.dock ...

  6. 基于springboot多模块项目使用maven命令打成war包放到服务器上运行的问题

    首先,大家看到这个问题,可能并不陌生,而且脑子里第一映像就是使用mava中的clear package 或者 clear install进行打包,然后在项目中的target文件夹下面找到xxx.war ...

  7. Java的JAR包, EAR包 ,WAR包 都是干什么的,有什么区别

    JAR包:打成JAR包的代码,一般作为工具类,在项目中,会应用到N多JAR工具包: WAR包:JAVA WEB工程,都是打成WAR包,进行发布,如果我们的服务器选择TOMCAT等轻量级服务器,一般就打 ...

  8. tomcat如何配置启动时自动部署webapps下的war包

    1.找到 tomcat安装目录/conf/server.xml 2.修改host元素的配置如下: <Host name="localhost" appBase="w ...

  9. IntelliJ IDEA打包WAR并部署运行(mac osx)将Web项目War包部署到Tomcat服务器基本步骤(完整版)

    用IntelliJ IDEA做web开发体验很好,但导出war包比eclipse麻烦了不少,以下是解决方案: 打包:1.自动打包:File —> Project Structure —> ...

随机推荐

  1. C++ 派生类成员的访问属性

    派生类成员的访问属性: C++继承方式总共分为以下几种:public.private.protected三种(它们直接影响到派生类的成员.及其对象对基类成员访问的规则).(1)public(公有继承) ...

  2. linux内核分析--计算机是如何工作的

    实验部分 使用gcc -S -o main.s main.c -m32命令将源代码编译成汇编代码. 源代码如下: int g(int x) { return x + 9; } int f(int x) ...

  3. vs2013安装过程及使用心得

    进入http://www.itellyou.cn/ 方法/步骤 1 1:点击中文简体 2:钩出前面的空格 3:点击详细信息 4:复制到网页进行搜索迅雷下载   等待下载完成之后,双击文件 我们双击文件 ...

  4. linux 取消控制台报警音

    可以通过setterm -blength 0 设置报警音报警时间,0表示没有报警音 也可以通过setterm -bfreq 10 设置报警音的频率(Hz) 如果通过命令行直接设置,当下会生效,但是重启 ...

  5. Vue入门---属性、style和class绑定方法

    一 .用对象的方法绑定class <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  6. Codeforces 494C - Helping People

    题意 有一个长度为 \(n\) 的数列 \(a\),有 \(m\) 个 操作,每个操作是给 \(a[l_i,r_i]\) 中的数都加一,一个操作有 \(p_i\) 的概率执行(否则不执行).一个性质是 ...

  7. linux 命令大全,我去

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  8. JVM学习笔记(四):类加载机制

    虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 一.类加载的时机1. 类从被加载到虚拟机内存 ...

  9. MT【187】余弦的线性组合

    已知$\alpha+\beta+\gamma=\pi,(\alpha,\beta,\gamma\ge0)$ 求:$3\cos\alpha+4\cos\beta+5\cos\gamma$的最大值____ ...

  10. MT【84】夹逼定值

    分析:此类题还是比较常见的,左右都有不等式,中间夹着一个式子,我们可以找个$x$使得中间式子满足的条件显示出来. 类似的方法可以用在这道浙江高考文科压轴题上