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

     第一次写东东,心情有点儿小激动,因为今天刚刚把maven在tomcat上跑起来,所以趁热打铁,写写过程中经历的很多小挫折以及心中狂奔过的无数个草泥马。

    还是先写如何配置吧,没接触maven的我,以为只要直接maven build,然后run起来就可以在tomcat上飞快的奔跑起来,真是好多时候真心觉得自己每天都不带脑子的。虽然我内心也在挣扎,好像我什么都没在tomcat上干过,但是我就想相信直接就可以哟。真是蠢蠢哒到了极点。

   说了那么多,配置来了,网上大同小异。我也看了很多别人写的,此处是借的别人写的,怪我懒吧,就不一一手敲了。

   具体方法如下:

  1. Tomcat7的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户。这里我把所用的权限都添加给admin用户了,具体代码如下:

    <role rolename="admin-gui"/>

    <role rolename="admin-script"/>

    <role rolename="manager-gui"/>

    <role rolename="manager-script"/>

    <role rolename="manager-jmx"/>

    <role rolename="manager-status"/>

    <user username="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一致):

    <server>
            <id>tomcat7</id>
            <username>admin</username>
            <password>password</password>
    </server>

  3. 在Web项目的pom.xml文件的<plugins>节点中,添加tomcat7的maven插件:
    <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>
    	<username>admin</username>  <!--此处用户名及密码也和第2步一致,反正我是这样的 -->
    	 <password>password</password>
            <server>tomcat7</server> <!-- 此处的名字必须和setting.xml中配置的ID一致-->
            <path>/mavenProject</path> <!-- 此处的名字是项目发布的工程名-->
        </configuration>
    </plugin>
  4. 最后,只需要maven build,然后在Goals中填上tomcat7:deploy就可以run起来了(必须事先启动tomcat服务器)。如果幸运的话,你第一回就能够成功哟,这样你只需要输入localhost:8080/项目名称,就可以看到你的页面了。如果是成功的话,你tomcat的安装目录webapps显示两个多出连个东东,如图。文件夹的名称是我项目的名字。


    接下来就该来聊聊过程中出现的问题了,想必这是最痛苦的时候了。
    我出现过以下两个ERROR。

    1.    Failed to execute goalorg.codehaus.mojo:tomcat-maven-plugin:1.1:redeploy (default-cli) on projectpop-webs-server: Cannot invoke Tomcat manager:Error writing to server ->[Help 1]

    2.    ERROR] Failed to execute goalorg.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) onproject myproject: Cannot invoke Tomcat manager: Software caused connectionabort:socket write error -> [Help 1]

    这两个问题我都出现过,前一个问题是用pom.xml配置(在下面)中第一种方法build的,后一个错误使用第二种方法build的,参考了网上各种各样的方法都没解决我的问题。最后最后,就是这么easy,把一个html改成text就好了。原谅我6和7都是用的html,姑娘我觉得有什么关系呢,结果就是这么大的关系,你说咋办。

    解决方法:使用tomcat6的时候,配置如下:
    <plugin>

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

    </configuration>
    </plugin>
    如果是tomcat7的话,url必须改成这样
    <url>
    http://localhost/manager/text</url>

    POM.XML配置有两种方法:

    1)在project的build节点下 添加tomcat-maven-plugin插件信息,如下写法添加了tomcat6和tomcat7的插件,如只用1种可以只写一个

        <plugins> 

            <plugin> 

                <groupId>org.apache.tomcat.maven</groupId> 

                <artifactId>tomcat6-maven-plugin</artifactId> 

                <version>2.0-SNAPSHOT</version>      

                <configuration> 

                  <url>http://localhost:8080/manager/html</url>  

                  <server>tomcat</server> 

                </configuration>        

            </plugin> 

            <plugin> 

                <groupId>org.apache.tomcat.maven</groupId> 

                <artifactId>tomcat7-maven-plugin</artifactId> 

                <version>2.0-SNAPSHOT</version> 

                <configuration> 

                <url>http://localhost:8080/manager/text</url>  

                <server>tomcat7</server>

                <username>admin</username>

               <password>admin</password>  

                </configuration> 

            </plugin> 

    </plugins> 

    --2.0-SNAPSHOT版本已经release了

     

    2)  在project节点下,在插件仓库(plugin repositories)和普通仓库(repositories)中添加以下仓库到pom.xml,保证maven可以从仓库中下载到tomcat-maven-plugin插件,少添加了这段信息,会出现如下报错信息:

    No plugin found for prefix 'tomcat' in the current project andin the plug(这个问题我也出现过,我思考应该是这样的原因。有时候第一次发布的时候正常,再发布的时候就错误了。网上是这样讲的,如果第一种方法,发布的时候tomcat7:deploy,但有些人再次发布就有错。但是如果用以下这个方法,就可以再次发布,goals上填tomcat:redeploy。我先用的第二种,后来又换成第一种,后来发现时html那儿错了,跑起来了也就啥也不顾了,不过这也是一种方法,大家有问题的时候可以试用以下哟。)

    <repositories>

    <repository> 

        <id>people.apache.snapshots</id> 

        <url> 

            http://repository.apache.org/content/groups/snapshots-group/ 

        </url> 

        <releases> 

            <enabled>false</enabled> 

        </releases> 

        <snapshots> 

            <enabled>true</enabled> 

        </snapshots> 

    </repository> 

    </repositories>

     

    <pluginRepositories>

    <pluginRepository> 

        <id>apache.snapshots</id> 

        <name>Apache Snapshots</name> 

        <url> 

            http://repository.apache.org/content/groups/snapshots-group/ 

        </url> 

        <releases> 

            <enabled>false</enabled> 

        </releases> 

        <snapshots> 

            <enabled>true</enabled> 

        </snapshots> 

    </pluginRepository>

    </pluginRepositories>

    就这么简单,折腾了好一会儿,心塞,感觉所有的问题全被我全碰到过!关于SSM整个框架的搭建以及其中的遇到的问题,我陆续会发出来,与大家共享,希望能与大家一块儿进步。

     



展开阅读全文

没有更多推荐了,返回首页