使用Maven自动部署Java Web项目到Tomcat问题小记

原创 2014年10月21日 23:15:53

导读

首先说说自己为啥要用maven管理项目,一个直接的原因是:我在自己电脑上开发web项目,每次部署到服务器上时都要经历如下步骤:

  1. 首先在Eclipse里将项目打包成war包
  2. 将服务器上原来的项目文件夹删掉
    cd /var/lib/tomcat7/webapps
    sudo rm XXX.war
    sudo rm -rf XXX
  3. 将war包传到服务器上,比如用pscp命令上传
    pscp -pw "xxx" XXX.war username@ip:/var/lib/tomcat7/webapps
  4. 重启tomcat
    sudo service tomcat7 restart

每次都这些步骤,非常烦人,而用maven来管理就不需要这些步骤啦,直接在Eclipse里配置maven插件,然后使用maven来自动部署项目,关于怎么自动部署可网上很多教程,具体可参看后面的参考资料,部署成功后只需要用一个命令即可自动将我的web项目部署到tomcat服务器上,我一般用下面这样的命令:

mvn tomcat7:deploy -Dmaven.test.skip=true

其中-Dmaven.test.skip=true表示临时性跳过测试代码的编译(也可用-DskipTests表示跳过测试阶段),maven.test.skip同时控制maven-compiler-plugin和maven-surefire-plugin两个插件的行为,即跳过编译,又跳过测试。

但初次按着教程来总是遇到各种问题,下面记录我在部署过程中遇到的各种问题及注意事项,以提供参考意义。

maven使用问题小记

  1. maven配置文件pom.xml里的tomcat插件一般像下面这样配置:

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>tomcat-maven-plugin</artifactId>
      <version>1.1</version>
      <configuration>
         <path>/test</path>
         <url>http://localhost:8080/manager/</url>
         <server>tomcat</server>
      </configuration>
    </plugin>

    里面的server需要在maven的配置文件settings.xml里配置如下:

    <server>
      <id>tomcat</id>
      <username>admin</username>
      <password>123456</password>
    </server>

    这里的username和password一般为tomcat server的用户名和密码。

  2. 开始运行自动部署命令时,一定要先启动tomcat。否则会报下列错误:

    [INFO]   
    [INFO] --- tomcat-maven-plugin:1.0:redeploy (default-cli) @ SSHMJ-FRANK ---  
    [INFO] Deploying war to http://localhost:8080/SSHMJ-FRANK    
    [INFO] ------------------------------------------------------------------------  
    [INFO] BUILD FAILURE  
    [INFO] ------------------------------------------------------------------------  
    [INFO] Total time: 9.630s  
    [INFO] Finished at: Tue Aug 31 16:35:52 CST 2010  
    [INFO] Final Memory: 6M/15M  
    [INFO] ------------------------------------------------------------------------  
    [ERROR] Failed to execute goal org.codehaus.mojo:tomcat-maven-plugin:1.0:redeploy (default-cli) on project SSHMJ-FRANK: Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]  
    [ERROR]   
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.  
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.  
    [ERROR]   
    [ERROR] For more information about the errors and possible solutions, please read the following articles:  
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
  3. HTTP 403错误

    [ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat-maven-plugin: 1.1:
    deploy (default-cli) on project XXX: Cannot invoke Tomcat manager: 
    Server returned HTTP response code: 403 for URL: 
    http://localhost:8080/manager/html/deploy?path=XXX -> [Help 1]

    网上有人说产生该问题有可能因为两个原因:
    1)如果使用的是Tomcat 7,需要修改pom.xml中部署的url地址,将
    <url>http://localhost:8080/manager</url>
    改为
    <url>http://localhost:8080/manager/text</url>
    2)tomcat用户权限分配问题,需要同时具备manager-gui和manager-script权限,比如忘了分配manager-script权限。
    正确的conf/tomcat-users.xml配置应为:

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

    不过我的问题都不是上面两个,我的问题是自动部署命令写错了,应该是mvn tomcat7:deploy命令,而我之前用的是mvn tomcat:deploy命令

  4. “Application already exists at path”问题
    使用tomcat7-maven-plugin插件部署到tomcat服务器时,当服务器上已经有相同名字的项目就会导致

    FAIL - Application already exists at path ...

    解决方法是在pom.xml文件中配置tomcat7-maven-plugin插件时加入参数update

    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.0-SNAPSHOT</version>
      <configuration>
          <url>http://XXX:8080/manager/html</url>
          <server>tomcat</server>
          <username>admin</username>
          <password>12345</password>
          <path>/${finalName}</path>
          <update>true</update>
       </configuration>
    </plugin>
  5. “web.xml which will be ignored ”问题
    在使用Maven 编译项目的时候会出现:

    [WARNING] Warning: selected war files include a WEB-INF/web.xml which will be ignored
    (webxml attribute is missing from war task, or ignoreWebxml attribute is specified as 'true')

    解决方法是添加下面这样一个plugin即可:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.1.1</version>
      <configuration>
         <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
      </configuration>
    </plugin>

参考资料

Maven项目部署到tomcat+部署中的各种问题

第一次写东东,心情有点儿小激动,因为今天刚刚把maven在tomcat上跑起来,所以趁热打铁,写写过程中经历的很多小挫折以及心中狂奔过的无数个草泥马。     还是先写如何配置吧,没接触maven的我...
  • u012052168
  • u012052168
  • 2016年09月06日 12:44
  • 21935

自动部署Tomcat错误排除

转自:http://www.51testing.com/html/94/488194-845177.html 在Maven与Tomcat配合部署过程中,最常见的错误有三种,折腾了半天,终于找到三种错...
  • wuha0
  • wuha0
  • 2014年01月22日 11:59
  • 12686

Maven Tomcat7自动部署

摘要:本文主要讲了Maven中使用Tomcat7进行自动部署 启动tomcat7,然后访问 http://localhost:8080/manager/html,输入admin/passw...
  • Evankaka
  • Evankaka
  • 2015年07月02日 20:24
  • 12149

备忘-tomcat-maven-plugin的使用

环境: Ubuntu 8.10, tomcat6, mave2 maven2有一个把web应用部署到tomcat下的插件 tomcat-maven-plugin , 我们可以使用这个插件...
  • fengyun111999
  • fengyun111999
  • 2010年06月25日 14:20
  • 9492

记一次解决jenkins持续构建,自动部署的问题

问题背景:         用jenkins在持续构建:在从svn迁出代码,build成功,把jar/war上传私服nexus后,将项目直接部署到应用服务器中,曾经做过直接部署到tomcat中没有...
  • shan9liang
  • shan9liang
  • 2014年02月28日 21:07
  • 19201

Maven插件自动部署项目

使用wagon-maven-plugin插件自动部署项目 该插件的maven依赖为: org.codehaus.mojo wagon-maven-plugin 1.0 ...
  • qq_15766297
  • qq_15766297
  • 2017年04月23日 15:37
  • 151

Failed to execute goal org.codehaus.mojo:tomcat-maven-plugin:1.0:deploy

应用tomcat-maven-plugin将maven项目部署在tomcat中时创建失败:*************************************************[INFO]...
  • fengyun111999
  • fengyun111999
  • 2010年06月28日 11:18
  • 21854

maven的部署和启动以及常见的三种错误

一.maven的部署和启动 我用的tomcat7,其中tomcat-user.xml文件需要配置如下role和user [html] view plaincopy ...
  • tomcat_2014
  • tomcat_2014
  • 2015年08月18日 17:25
  • 4372

Maven--403权限问题解决方案(求解决)

tomcatManager status code:403, ReasonPhrase:Forbidden
  • u012922262
  • u012922262
  • 2014年10月09日 08:50
  • 2218

再谈maven自动部署到tomcat的问题

最近需要使用Maven将项目自动部署到Tomcat,在网络上也查找了很多文章,内容大同小异,今天打算在这里给自己做一个小总结 参考网址:http://blog.csdn.net/dilaomimi/...
  • smilevt
  • smilevt
  • 2012年11月22日 14:22
  • 108721
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Maven自动部署Java Web项目到Tomcat问题小记
举报原因:
原因补充:

(最多只允许输入30个字)