本人现在开始学习着弄maven,最近部署一个maven web项目,其中有些前辈写的东西还是蛮经典的,maven项目的建立随着版本的更新操作越来越简单,我现在用的maven版本是3.3.9,较之前的版本基本傻瓜式操作。maven web项目的几种部署方式请参考前辈们写的, 参考请戳我。
咱先讲讲自己碰到的问题:
三种常见的部署方式:第一种是手动将项目打包成war,发布在tomcat/webapps/下,第二种是在运行 tomcat7:run(如在eclipse中运行,会启动tomcat-maven插件),第三种是开启外部tomcat,在执行tomcat7:redeploy,如果是第一次运行,则执行tomcat7:deploy。
刚开始,按照上述的几种部署方式,第一种方式和第二种方式都很简单的实现,就是在第三种方式(自动部署到tomcat服务器上)的部署花费了我好长时间,主要的问题就是eclipse它本身自带了一个maven插件,但是前段时间由于其他项目需要,我把maven升级在外部安装。问题就是出在这里,编译项目的时候一直都提示, “tomcatManager status code:403, ReasonPhrase:forbidden” ,也查看了 外部maven的settings.xml的配置和tomcat-users.xml的配置,这些配置应该是没有问题啦!但是问题还是一直出来!到底是何原因呢?
<server>
<id>tomcat</id>
<username>admin</username>
<password>admin</password>
</server>
settings.xml配置
<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="admin" roles="manager-gui,
manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
tomcat-users.xml配置
<build>
<finalName>demo-shiro-hello</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<warFile>target/${project.build.finalName}.war</warFile>
<url>http://localhost:8080/manager/text</url> <!--tomcat7的实际管理地址 -->
<path>/${project.build.finalName}</path>
<server>tomcat</server>
<username>admin1</username>
<password>admin1</password>
<uriEncoding>UTF-8</uriEncoding>
<charset>UTF-8</charset>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
pom.xml文件配置也是正确的
后面自己分析了下,为啥得不到权限的一直都禁止访问呢?是不是哪个配置文件不生效呢,于是乎,我一直都在重启tomcat,但是没有什么卵用,好吧,我差点要放弃的时候,我就查看了eclipse maven插件的配置选项,果然就是出在这个问题上。
原来在加载这个settings.xml问题上,默认是加载原先插件的配置文件,所以导致修改一直无效,现在将外部的setttings.xml的文件导入,问题已解决。
常见的几种出错方式 参考原址:原文地址:http://www.51testing.com/html/94/488194-845177.html
1.Connection refused错误
报错信息如下:
[ERROR]Failed to execute goal org.apache.tomcat.maven: tomcat7-maven-plugin:
2.0- SNAPSHOT: deploy (default-cli) on project helloworld:
Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]
原因:未启动Tomcat服务器
解决办法:先启动Tomcat服务器再选择Run
2. 401错误
报错信息如下:
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:
2.0-SNAPSHOT:deploy (default-cli) on project helloworld:
Cannot invoke Tomcat manager: Server returned HTTP response code:
401 for URL: http://localhost:8080/manager/text/deploy?path=%2Fhelloworld -> [Help 1]
原因:权限问题
解决办法在$CATALINA_BASE/conf/tomcat-users.xml,
如D:\apache-tomcat-7.0.34\conf\tomcat-users.xml文件中添加权限
<role rolename=”manager”/>
<user username=”admin” password=”admin” roles=”manager”/>
修改pom.xml文件,在<configuration>
</configuration>中添加
<username>admin</username>
<password>admin</password>
3.403错误
报错信息如下:
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:
2.0-SNAPSHOT:deploy (default-cli) on project helloworld:
Cannot invoke Tomcat manager: Server returned HTTP response code: 403 for URL:
http://localhost:8080/manager/html/deploy?path=%2Fhelloworld -> [Help 1]
原因:产生该问题有可能因为两个原因,具体参见解决办法
解决办法:
1)如果使用的是Tomcat 7,需要修改pom.xml中部署的url地址,将
<url>http://localhost:8080/manager</url>
改
<url>http://localhost:8080/manager/text</url>
在这次部署的问题上,我就是遇到了url 的问题,我用的是tomcat7
2)给tomcat用户权限分配上,需要同时具备manager-gui和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>