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应该是&lt;url&gt;http://127.0.0.1:8080/manager/text&lt;/url&gt;,对应角色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部署问题的主要内容,如果未能解决你的问题,请参考以下文章

eclipse中的maven的web项目怎么部署到tomcat中

Maven自动部署Web项目到Tomcat服务器

maven部署项目到tomcat

maven工程,如何部署到tomcat的位置?

tomcat部署maven项目需要安装maven环境吗

eclipse下创建maven项目并部署到tomcat服务器(转)