前言
学习了这么久的web开发,不知道大家有没有发现一个问题,就是每当我们的项目重新部署的时候,比方说配置文件修改了之后,必须要将tomcat重启之后生效,大家试想一下我们做的还是微型项目,启动起来可能还会花费不少时间,那么如果是企业级项目,或者是用户量比较大的电商项目的时候,那肯定不能用重启tomcat这种方式了。
那么本节,我们就要换种方式完成项目的更新,名为 — Deploy部署
关于Tomcat的再次说明
之前我们已经学习过Tomcat,为什么要对Tomcat再次说明呢?
因为本次我们掌握的部署原本就是Tomcat的一种操作方式,只不过之前我们没有用到而已,那么借助此次机会,我们再回顾一下Tomcat中的webapps工作空间的构成吧~
Docs:文档
Examples:示例
Host-manager :本机管理
Manager :项目发布不熟等等的在线管理
Root:用户访问http://intAddress:port/可以直接访问到的项目
之前在讲tomcat的时候提到过,当我们访问 http://intAddress:port/
比方说 http://127.0.0.1:8080/ 的时候,我们会进入到下面这么个页面。
这个页面的所有内容其实都在Root中,大家可以试着输入 http://127.0.0.1:8080/docs/ ,就会进入下面这个页面
关于Tomcat的项目部署
这个时候大家会不会有疑问,就是这些内置的项目并没有在我们启动tomcat的时候add进来,但是却能够运行?
其实大家不妨这么去做,先随便找一个web项目,然后使用Maven install这种方式对项目进行打包
成功之后大家可以方式我们项目最下面的目录target中会多出很多文件夹,和一个.war文件
除了.war文件,其他都是我们项目启动的时候需要依赖的一些环境,比方说jar包,静态资源文件和插件,那么这个.war就是我们的war包(Web项目的打包方式),这个war包是可以被解压的。大家可以试着解压一下会发现里面就是我们这个项目的web目录
现在我们做一个实验,照葫芦画瓢,既然你的ROOT项目丢到webapps目录下,启动的时候可以直接运行,那么我把已经打好的war包丢进去是不是能够运行呢?
其实大家不妨试试,这样操作我们的项目是可以运行的,这里我就不演示啦。
那么讲到这里我们就要切入正题了,也就是Tomcat中的部署,其实在之前没有Maven实现自动部署的时候,当项目版本更新之后,负责项目的人员都会将最新版本的项目打成war包,然后转交给专门负责项目发布的人员,那么他就会进到tomcat的主页,点击Manager App进行项目的部署,这样做的话,tomcat就不用再重启(大型项目的tomcat重启是很耗费时间的)
那么点击这个按钮我们会发现,需要我么输入账号密码?那么这个账户在哪里配置呢?
点开apache-tomcat的conf文件夹,我们可以找到tomcat-users.xml文件,在这里面配置用户信息
点开文件之后我们在最下面配置用户的信息,除了username和password,其他的都不要改动
配置完成后我们再重启一遍tomcat,试着登录一下,可以进到下面的汤姆猫管理界面
我们试着找到下面的项目部署按钮,将我们之间打好的war包上传
不难发现,我们的项目在部署列表中已经存在了
我们试着访问一下项目 http://127.0.0.1:8080/carrent_plus/(部署名)
项目成功登录,没有问题!我们再看看项目部署列表的最右边有三个按钮,根据字面意思很容易理解,分别是 停止、重载和解除部署,这里提一下Undeploy,点击Undeploy就相当于把项目下线,点击后我们会发现,项目在列表中被移除。
当我们再次访问 http://127.0.0.1:8080/carrent_plus/(部署名) 的时候,就会进到我们朝思暮想的404页面啦!
Maven项目的自动部署
前面铺垫了这么多,主要是像让大家了解Maven项目的自动部署的原理,说是自动部署,其实底层还是使用的tomcat的这种部署方式,调用了tomcat部署项目的接口,那么有了前面的学习,接下来理解起来就容易的多啦~
第一步:配置settings.xml
首先我们进入到之前配置过Maven的jar包仓库的settings.xml文件,在servers中添加如下配置
<server>
<id>tomcat7</id>
<username>admin</username>
<password>admin</password>
</server>
第二步:修改项目配置pom.xml
接着修改项目的pom.xml
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--解决页面提交数据乱码问题 -->
<uriEncoding>UTF-8</uriEncoding>
<!-- tomcat插件的请求端口 -->
<port>8080</port>
<!-- 指tomcat的manager项目的访问地址
http://127.0.0.1:8080/manager
text必须要加,不加的话,使用maven打包的话不能帮我们把项目部署到tomcat7里面
-->
<url>http://localhost:8080/manager/text</url>
<!-- tomcat的登陆名和密码 -->
<username>admin</username>
<password>admin</password>
<!-- 打成war包的名字 -->
<path>/marco</path>
</configuration>
</plugin>
接着我们来运行项目,注意,Goals要从 tomcat7:run
修改成 tomcat7:deploy
部署成功之后我们再次访问项目 http://127.0.0.1:8080/marco/(path) ,注意这里的访问地址和之前不一样了,是你在配置pom.xml中的项目部署或者说打成war包的名称
访问成功,没有问题!
知识补充库
到文章的最后,再给大家补充一点小知识啦,总是怕你们没学够~
mvn的命令启动
mvn tomcat7:run 使用pom.xml里面配置的插件启动
mvn tomcat7:deploy 使用外部的tomcat启动
mvn tomcat7:undeploy 删除外部的tomcat的部署
mvn install 打包
mvn build 构建项目【测试否运行】
mvn clean 清除项目【项目里面和target目录里面的所有内容】
如果大家按照我之前 Marco’s Java【Maven入门(一) 之 Maven的下载配置安装】 这篇博文配置过了环境变量,那么在小黑屏中使用这些命令也可以对Maven项目进行操作啦,简单了解一下就可以了,装X必备哦~