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

来源:互联网 发布:淘宝茶叶不好卖了 编辑:程序博客网 时间:2024/06/05 16:32

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

先说下自动编译的好处,总不可能每次开发都手动打包到服务器,再上传吧,也是因为最近项目原因,今天才设置这个热部署。

使用maven+tomcat是自动编译部署的一种方式,其他方式我想接下来应该也会使用,那就是使用Jenkins.两种方式对比,有经验的开发者可能会比较了解,没经验的我在这边稍微说下。

假设我现在使用的是maven+tomcat是自动编译部署,那我部署的方式则是通过maven命令执行命令进行操作,可能每次项目如果我是项目管理者我需要每次先update我的project,然后再执行maven命令把生成的war包自动部署到服务器。那使用Jenkins呢?

Jenkins则是在上面的基础上做提升,可以使用maven+git、svn+tomcat进行操作,大概流程是开发者把code上传到git、svn,使用Jenkins帮你进行上面的maven命令操作,可以设置Jenkins每分钟进行轮询,如果开发者有上传代码,则自动进行打包,这样是不是节省了我们手动打包,手动部署,手动执行maven操作步骤呢???好了,现在先说下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加上去就可以了。希望对遇到问题的朋友有帮助。








原创粉丝点击