Maven 无法调用Tomcat管理器:软件导致的连接中止
我曾在多个地方看到,除了我自己,其他人都尝试过中介绍的所有解决方案,在浏览了谷歌上的每一页结果后,我都没有找到结果。我正在尝试将maven项目部署到Tomcat,但得到以下打印输出:Maven 无法调用Tomcat管理器:软件导致的连接中止,maven,tomcat,Maven,Tomcat,我曾在多个地方看到,除了我自己,其他人都尝试过中介绍的所有解决方案,在浏览了谷歌上的每一页结果后,我都没有找到结果。我正在尝试将maven项目部署到Tomcat,但得到以下打印输出: [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] --------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.178 s
[INFO] Finished at: 2016-08-03T15:01:17-04:00
[INFO] Final Memory: 15M/105M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project Project_2: Cannot invoke Tomcat manager: Software caused connection abort: socket write error -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
两者
及
导致相同的错误
pom.xml
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<server>tomcat7</server>
<path>/Project_2</path>
<port>8085</port>
<url>http://localhost:8085/manager/text</url>
<update>true</update>
<username>manager</username>
<password>xxxx</password>
</configuration>
</plugin>
org.apache.tomcat.maven
,Tomcat7插件将适用于Tomcat8。我也有同样的错误
从Windows主机使用Java 7,目标是在本地VM(VirtualBox)中运行的Tomcat 7。访问经理的应用程序。从我的浏览器中可以很好地工作(/html
或/text
)
似乎不能将manager gui
和manager脚本
角色授予同一用户。因此,我最终让deployer
用户担任manager脚本
角色,在以下情况下,我能够正确执行Maven命令:
<tomcat-users>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="..." roles="admin-gui,manager-gui"/>
<user username="deployer" password="..." roles="manager-script"/>
</tomcat-users>
参考资料:
同样的问题,通过Maven settings.xml中正确的凭据解决了。是,此错误消息具有误导性:
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project projectXXX: Cannot invoke Tomcat manager
...
Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager
...
Caused by: java.net.SocketException: Connection reset by peer: socket write error
我们在pom.xml中使用概要文件,因此:
<profile>
<id>stage_server</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<tomcat-server>stage-server</tomcat-server>
<tomcat-url>http://stage.server.com/manager/text</tomcat-url>
</properties>
</profile>
我可以从邮递员那里上传文件,这样我就知道用户ID和密码是正确的,Tomcat服务器的设置是正确的。我在我的项目根目录下的my settings.xml中有用户和密码,但是,它没有读取它们,并且没有错误,它找不到我的服务器。我将用户和密码直接移动到POM.xml中,它成功了。我想我已经读过了,我可以把settings.xml放在项目的根目录中,但是,我肯定遗漏了什么。@J.Chaney我想你必须把settings.xml文件放在Maven home目录的子目录“conf”中。如果您在Maven home/conf目录中有这个文件,部署会成功吗?
<server>
<id>tomcat7</id>
<username>manager</username>
<password>xxxx</password>
</server>
<tomcat-users>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="..." roles="admin-gui,manager-gui"/>
<user username="deployer" password="..." roles="manager-script"/>
</tomcat-users>
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project projectXXX: Cannot invoke Tomcat manager
...
Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager
...
Caused by: java.net.SocketException: Connection reset by peer: socket write error
<profile>
<id>stage_server</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<tomcat-server>stage-server</tomcat-server>
<tomcat-url>http://stage.server.com/manager/text</tomcat-url>
</properties>
</profile>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>${tomcat-url}</url>
<server>${tomcat-server}</server>
<update>true</update>
</configuration>
</plugin>
<server>
<id>stage-server</id>
<username>admin</username>
<password>xxxxx</password>
</server>
mvn tomcat7:deploy -Pstage_server