Maven实现直接部署Web项目到Tomcat7

来源:互联网 发布:vmware p2v迁移linux 编辑:程序博客网 时间:2024/05/16 11:48

或许你已经在开源中国的博客里看到了这篇文章,但是虽然这篇文章也是从那里copy来的,我将说明一些应当注意的问题。

-----------------------------------------------------------------------------------------------------------原文开始---------------------------------------------------------------------

  以前在项目中很少使用Maven,最近自己学习了一下maven,真的是非常强大的项目构建工具,对于依赖包的定义及版本,以及依赖包的集中管理(中央仓库)都让人惊喜(原谅我的大惊小怪,虽然Maven出来很久了,但小弟刚接触),但发现开发Web项目时,需要手动部署到Web服务器(Tomcat7),如果能自动部署到Web服务器,而不用每次手动把target下编译好的war包拷贝到Tomcat下就更好了。

    下面是具体的使用方法:

  1. Tomcat7的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户。这里我把所用的权限都添加给admin用户了,具体代码如下:
    ?
    1
    2
    3
    4
    5
    6
    7
    <rolerolename="admin-gui"/>
    <rolerolename="admin-script"/>
    <rolerolename="manager-gui"/>
    <rolerolename="manager-script"/>
    <rolerolename="manager-jmx"/>
    <rolerolename="manager-status"/>
    <userusername="admin"password="password"roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
  2. Maven的Server的配置:在Maven的安装路径找到conf目录下的setting.xml文件,在<servers>节点中添加tomcat7下配置的用户信息(id可以任意填写,但username和password必须和步骤1一致):
    ?
    1
    2
    3
    4
    5
    <server>
        <id>tomcat7</id>
        <username>admin</username>
        <password>password</password>
    </server>
  3. 在Web项目的pom.xml文件的<plugins>节点中,添加tomcat7的maven插件,
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <!-- 注意此处的url -->
            <url>http://localhost:8080/manager/text</url>
            <server>tomcat7</server><!-- 此处的名字必须和setting.xml中配置的ID一致-->
            <path>/mavenProject</path><!-- 此处的名字是项目发布的工程名-->
        </configuration>
    </plugin>
  4. 最后,只需要mvn tomcat7:deploy就可以了(必须事先启动tomcat服务器)

--------------------------------------------------------------------------------------------------原文结束------------------------------------------------------------------------------------------------------------------



先说明我碰到的一个问题: Cannot invoke Tomcat manager: Software caused connection abort: socket write error

具体什么原因不清楚,最后通过将tomcat7-maven-plugin的version改成2.2解决,如果是第一次部署的话。如果该项目已经部署到服务器上了,想要重新部署,那么需要使用mvn tomcat7:redeploy,否则也会遇到上面的错误。

另外,需要注意的是,tocmat6以及之前的版本的配置,和tomcat7是不同的。tomcat7中的tomcat7-maven-plugin中的configuration中的url为http://localhost:8080/manager/text,而tomcat6中的为http://localhost:8080/manager

tomcat7要先启动,在命令行转到项目目录下输入d:\maven3\bin\mvn tomcat7:deploy看结果.(注:不是tomcat:deploy)

在eclipse配置好外部的maven,在eclipse的run configurations建一个Maven Build:Name随便起一个名字(如tomcat7_redeploy),Base directory选项目目录${workspace_loc:/testweb},goals填tomcat7:deploy.或tomcat7:redeploy

deploy:如果已经部署过,再deploy就会失败.去tomcat7的webapps删除已经部署过的就行了.

redeploy:即使没部署过也不会失败.不知道build的速度会不会明显减慢??

至于选deploy还是redeploy,自己看着办吧!


0 0
原创粉丝点击