解决使用tomcat6-maven-plugin时的"can not invoke tomcat manager"问题

最近在项目中配置CI环境,于是发生了下面的事情:

第一阶段 -- 安装tomcat

1. 找来Linux机器;

2. 下载安装Tomcat6;

3. 配置JAVA_HOME,并启用配置tomcat-user.xml;

4. 启动tomcat:

$./bin/startup.sh

一切顺利!

第二阶段 -- Ant打包

1. 生成ant脚本(build.xml);

2. 在eclipse中运行Ant,生成.war文件;

3. 打开http://{linux_host}:9999/manager/html,部署.war包;

依旧顺利!

第三阶段 -- Maven部署

1. 在项目根目录下添加pom.xml文件,并添加必须的jar包;

2. 更新eclipse里的.project文件,包含maven相关信息(是参考前一个maven项目修改的);

3. 更新.classpath文件,让它包maven的pom.xml中指定的jar包;

4. 在pom.xml中添加tomcat6-maven-plugin如下配置,以期实现自动远程tomcat部署;

        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat6-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <url>http://{linux_host}:9999/manager/html</url>
            <server>CI</server>
            <path>/xxxx</path>
            <warFile>xxxxx.war</warFile>
          </configuration>
       </plugin>
并在settings.xml中添加了id为CI的server,在其中添加了username/password。

接着就是测试mvn tomcat6:redeploy,很遗憾出现了"build failed!",并提示"can not invoke tomcat manager"。

google了一圈发现没有为部署用户名添加manager-script的role,想想觉得有可能,因为当前是manager-gui的role,而分析来看tomcat6-maven-plugin有可能不是模拟http post方式发送的request。但是很遗憾这样修改之后还是没有成功。一番研究之后发现有人提到了admin-script的role,于是将这个role也加入到用户中,重启后测试成功!


至此,第三阶段工作完成。剩下的就是整理一下maven的配置pom.xml以及代码目录结构。

你可能感兴趣的:(maven,javaee)