Maven项目中的Tomcat部署问题
Posted
技术标签:
【中文标题】Maven项目中的Tomcat部署问题【英文标题】:Tomcat deployement issue in a Maven project 【发布时间】:2013-01-14 04:40:02 【问题描述】:我一直在尝试创建一个简单的基于 maven Web 的项目,以对 maven 充满信心。我在 pom.xml 中添加了 tomcat7 插件以将其用作服务器。但是当我开始使用
将我的 war 文件部署到 tomcat 时tomcat7:部署
它抛出如下错误,
[INFO] Deploying war to http://127.0.0.1:8080/MavenWeb
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.585s
[INFO] Finished at: Wed Jan 30 16:03:06 IST 2013
[INFO] Final Memory: 9M/24M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.0:deploy (default-cli) on project MavenWeb: Cannot invoke Tomcat manager: Connection to http://127.0.0.1:8080 refused: Connection refused -> [Help 1]
我在 pom.xml 中的插件部分如下。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<url>http://127.0.0.1:8080/manager/html</url>
<warFile>/home/shebin/Maven Folder/MavenWeb/target/MavenWeb.war</warFile>
<server>TomcatServer</server>
<path>/MavenWeb</path>
<username>tomcat</username>
<password>tomcat</password>
</configuration>
</plugin>
.m2/settings.xml 和 /home/shebin/apache-maven-3.0.4/conf/settings.xml
<server>
<id>TomcatServer</id>
<username>tomcat</username>
<password>tomcat</password>
</server>
/home/shebin/apache-tomcat-7.0.35/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
我已经通过了各种解决方案,但我的方式没有任何效果。我的 Maven 版本是 3.0.4 并使用 tomcat7 插件。
【问题讨论】:
您是否首先验证您可以直接在tomcat管理器Web界面中部署WAR文件? 【参考方案1】:maven插件配置中的url应该是<url>http://127.0.0.1:8080/manager/text</url>
,对应角色manager-script
。
另外,值得注意的是,更改TOMCAT_HOME/conf/tomcat-users.xml
中的roles
后,必须重新启动tomcat服务器才能重新加载配置。我知道这是常识,但我的经验告诉我,你们中的一些人可能真的停留在这里。
【讨论】:
【参考方案2】:这个错误信息
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.0:deploy (default-cli) on project MavenWeb: Cannot invoke Tomcat manager: Connection to http://127.0.0.1:8080 refused: Connection refused -> [Help 1]
暗示这是与身份验证相关的。尝试改变它
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
到
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-script"/>
通过基于浏览器的管理客户端不会发生来自 maven 插件的访问 :)
【讨论】:
它也不起作用。仍然是同样的错误。还有你的意思是“从 maven 插件访问不会发生在基于浏览器的管理客户端”.. 您指定的角色“mananger-gui”为具有该角色的用户提供了访问基于 HTML 的管理 gui 的权限。我的意思是maven插件不会通过gui部署战争,所以使用它是错误的角色。尝试使用角色管理器脚本 :)【参考方案3】:我遇到了同样的问题。您需要添加一个额外的角色:manager-jmx。所以你的 tomcat-users.xml 文件应该有。
<user username="tomcat" password="tomcat" roles="manager-script, manager-jmx"/>
【讨论】:
【参考方案4】:感谢这篇文章中的要点,我也得到了这个工作。我坚持的事情是: POM 文件 - 您需要在路径的开头使用斜杠(或者它试图将其安装在 /manager/ 下但失败):
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://10.54.17.35:8080/manager/text</url>
<server>LoginForTomcat</server>
<path>/displayService</path>
</configuration>
</plugin>
在 ~/.m2/settings.xml 中提供服务器凭据:
<servers>
<server>
<id>LoginForTomcat</id>
<username>figgy</username>
<password>passw0rd</password>
</server>
</servers>
在tomcat服务器上,需要定义manager-script和manager-jmx:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<user username="figgy" password="passw0rd" roles="manager-gui,manager-script,manager-jmx"/>
查看这里的所有内容都在上面的帖子中,发布此内容以澄清事情。
【讨论】:
以上是关于Maven项目中的Tomcat部署问题的主要内容,如果未能解决你的问题,请参考以下文章