文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

开发过程怎么使用Tomcat Maven插件持续快捷部署Web项目

2024-04-02 19:55

关注

本篇内容介绍了“开发过程怎么使用Tomcat Maven插件持续快捷部署Web项目”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

我在平时工作中部署Web项目到测试服务器上的Tomcat时用的是Hudson。Hudson本身已经跟SVN、Git、Maven集成并且支持添加各种插件。但如果使用Hudson,我需要配置两个任务:一个任务负责打包项目成WAR,另外一个任务负责部署打包好的WAR包到目标服务器的Tomcat上。虽然任务只需要配置一次,但每次修改代码提交后,都得切换到浏览器点Hudson构建任务页面上的Build Now按钮,然后还得跳转到另一个页面观察是否有报错,然后再点击执行相应的部署任务。烦不胜烦,偶然发现Tomcat Maven插件支持直接打包并部署项目到Tomcat中,尝试一番后终于搞定,总结于此。

网上关于这个主题的文章也不少,过程也大同小异,但本文除了过程外还想记录下我期间踩过的坑和关于这种部署方案的建议。

1、准备工作

下载安装并配置好Tomcat和Maven。

准备好一个Maven Web项目。

‍2、Maven部署Web项目到Tomcat的配置‍

‍2.1、配置Tomcat角色‍

Maven自动部署实际上调的是Tomcat安装目录下的manager功能。而为了能正常访问http://localhost:8080/manager页面,我们需要修改$TOMCAT_HOME/conf目录下的tomcat-users.xml:

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

2.2、修改pom.xml增加Tomcat Maven插件

我使用的Tomcat7,pom.xml中增加如下配置:

<properties>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>     <spring.version>3.2.2.RELEASE</spring.version>     <finalName>web-loab</finalName> </properties> <build>     <plugins>         <plugin>             <groupId>org.apache.tomcat.maven</groupId>             <artifactId>tomcat7-maven-plugin</artifactId>             <configuration>                 <url>http://localhost:8080/manager/text</url>                 <server>tomcat</server>                 <username>tomcat</username>                 <password>tomcat</password>                 <path>/${finalName}</path>             </configuration>         </plugin>     </plugins> </build>

上面username、password来自tomcat-users.xml。server是Tomcat服务器名称。path是访问应用的路径。url指定Tomcat管理页路径。

2.3、修改Maven的settings.xml

在$USER_HOME/.m2目录下找到settings.xml,添加server节点:

<servers>     <server>        <id>tomcat</id>        <username>tomcat</username>        <password>tomcat</password>     </server> </servers>

上面的username、password依然与tomcat-users.xml中相同,id与2.2中的server相同

2.4、部署项目到Tomcat

先确保Tomcat服务器已经启动,然后cd到项目根目录,运行下面的命令:

mvn clean tomcat7:redeploy

部署成功,如下:

开发过程怎么使用Tomcat Maven插件持续快捷部署Web项目

然后我们就能在Tomcat安装目录的webapps目录下找到新部署的WAR包。

初次部署用的是tomcat7:deploy命令,重新部署可以用tomcat7:redeploy命令(推荐统一用这个),Tomcat Maven插件支持的命令包括:run、shutdown、run-war-only、exec-war、standalone-war-only、deploy、standalone-war、undeploy、run-war、redeploy等。

3、踩过的坑

光看上面的过程,似乎非常顺畅,但世上的事总是不会那么顺利的。下面列举几个我踩过的坑。

3.1、Windows系统下,redeploy过程无法删除旧项目的目录

报错信息在$TOMCAT_HOME/logs下的catalina日志文件中,如下:

信息: Undeploying context [/web-loab]  十月 11, 2014 3:52:26 下午 org.apache.catalina.startup.ExpandWar deleteDir  严重: [D:\tomcat\apache-tomcat-7.0.56\webapps\web-loab\WEB-INF] could not be completely deleted. The presence of the remaining files may cause problems

大概是因为Tomcat还在使用这个目录,无法删除,必须修改$TOMCAT_HOME/conf/context.xml:

<Context antiJARLocking="true" antiResourceLocking="true">

3.2、Servelt.class offending

这个问题应该不属于本文主题范畴了,但可能因为这个导致Web项目启动起来却无法访问,报错信息如下:

十月 11, 2014 3:46:29 下午 org.apache.catalina.loader.WebappClassLoader validateJarFile  信息: validateJarFile(D:\tomcat\apache-tomcat-7.0.56\webapps\web-loab\WEB-INF\lib\servlet-api-6.0.29.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class

原因是webapps目录下的某个Web项目的WEB-INF/lib目录下有servlet-api.jar,删除之,并在pom.xml中指定servelt-api.jar的scope为provided:

<dependency>     <groupId>org.apache.tomcat</groupId>     <artifactId>servlet-api</artifactId>     <version>6.0.29</version>     <scope>provided</scope> </dependency>

3.3、版本问题

确保Web项目的Java Build Path使用的JDK版本、Java Compiler的编译JDK版本以及Project Facets里的Java版本一致。

如果用的Tomcat6,则pom.xml中配置tomcat6-maven-plugin,如果用的tomcat7则用tomcat7-maven-plugin。或者默认用tomcat-maven-plugin。

4、有关使用Tomcat Maven插件部署项目的一些建议

这种方案能够实现持续快捷部署。但它有一些局限性:

因此初步建议只在开发环境使用这种部署方式,并且结合SVN、Git等版本控制软件做两个内部约定:

“开发过程怎么使用Tomcat Maven插件持续快捷部署Web项目”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯