maven+tomcat如何自动编译部署到服务器

首先,这个资源在网上有很多,讲的也很全,今天写这篇文章主要是记录今天在部署时候遇到的细节问题,希望能对大家有帮助。

先说下自动编译的好处,因为每次开发改动到的东西都要打包到服务器,如果不做自动部署,则需要每次手动打包再上传到服务器,这样会多了很多不必要的麻烦。

使用maven+tomcat是自动编译部署的一种方式,这种方式是基于项目的,需要在项目文件做配置。那有的人就会说,每次都在项目配置,也稍麻烦,的确,这种方式仅限于单体应用,如果是分布式则要配置的就相对繁琐,那么还有其他的方式吗?当然,在大公司有专门的运维平台,会使用一些工具如jenkins对版本控制的代码进行打包上传到服务器,下面我说一下两者的区别。

假设现在使用的是maven+tomcat是自动编译部署,那么部署的方式则是通过maven命令执行命令进行操作,每次部署的话会先从git pull,然后再执行maven命令把生成的war包自动部署到服务器。那使用Jenkins呢?

Jenkins则是在上面的基础上做提升,可以使用maven+git、svn+tomcat进行操作,大概流程是开发者把code上传到git、svn,使用Jenkins帮你进行上面的maven命令操作,可以设置Jenkins每分钟进行轮询,如果开发者有上传代码,则自动进行打包,这样是不是节省了我们手动打包,手动部署的操作步骤呢?好了,对于jenkins,有需要的朋友可以去学习了解,这边不做更多的累赘。现在先说下maven+tomcat是自动编译部署操作步骤和我今天遇到的问题吧!

非常简单,按照以下步骤走就可以。

一:在maven项目添加插件

<bulid>
<plugin>
     <groupId>org.apache.tomcat.maven</groupId>
     <artifactId>tomcat7-maven-plugin</artifactId>
     <version>2.2</version>
     <configuration>
           <url>http://127.0.0.1:8080/manager/text</url>  <!--这边以本地路径为例,如果是远程服务器则该对应的ip即可-->
         <server>tomcat-maven</server>
         <path>/shop</path>
         <charset>utf8</charset>
         <update>true</update>
     </configuration>
 </plugin>

</build>

备注:

1:以上的插件不是唯一的,还有别的插件可以进行操作,如果是第一次使用,可以先使用上面的版本

2:url:要打包上传的远程服务器。格式:tomcat6不需要/text,tomat7,8都需要

configuration参数是干嘛的呢?

1:server名称是待会需要在本地maven配置的,这两个名称需要一致

2:path就是你生成的访问路径,如果是上面写的,则访问路径是这样的http://127.0.0.1:8080/shop就可以访问了

二:在本地maven配置文件设置要的tomcat管理员权限

在setting.xml添加参数

<servers>

<server>
    <id>tomcat-maven</id>
    <username>admin</username>
    <password>admin</password>
    </server>

</servers>

备注:上面的id就是在pom设置的server名称,两个需要一致

这边的username和password是tomcat的,需要我们设置tomcat权限

三:在tomcat-users.xml设置

把以下参数放到<tomcat-user>体

<role rolename="tomcat"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script" />
<role rolename="admin-gui"/>
<user username="admin" password="admin" roles="tomcat,manager,manager-script,admin-gui" />
<user username="tomcat" password="tomcat" roles="manager-gui" />

这边配置的admin以及操作权限。

 

以上是我操作的步骤,网上有一些说还需要配置tomcat的访问ip,大家可以参考下

将 /apache-tomcat-8.5.4/webapps/manager/META-INF/context.xml中的,ip限制去掉

 

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="192\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
 

 

好了,接下来准备执行命令进行测试

如果是idea开发工具可以这样做,在右上角tomcat配置的地方打开,edit configuration,+选择maven

working-directory选择项目路径即可

commad-line:

 

//第一次
tomcat7:deploy
//之后
tomcat7:redeploy
mvn package -Pdevelop -Dmaven.skip.test=true tomcat7:deploy
-Dmaven.skip.test=true:是跳过测试的意思

 

 

注:开始执行命令时候tomcat是需要打开的,不然会报错。

 

总结:一开始是在本地做测试,很快就成功并且能够访问。后来要部署到服务器的时候就可以种报错。

首先,服务器的tomcat一样需要上面的操作。我这边报错的有

这样的

Cannot invoke Tomcat manager: Connection reset by peer: socket write error -

网上也是各种找,但是都不行。

后来找到了,首先服务器的tomcat是别人搭建的,tomcat的目录结构被修改,webapp下的manager文件夹和ROOT都不在了,所以出现了这种问题,后来把manager和ROOT加上去就可以了。希望对遇到问题的朋友有帮助。

如果您有兴趣,欢迎加入it成长之路学习交流群:728603969,群主会不定时的分享学习材料哦

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值