Tomcat-maven-plugin 401 error
Solution 1
You need to map the credentials from your settings.xml to the server configuration at your pom.xml.
In your case, this is done but setting the <id>
element of your server, to match the server's host name from the pom.xml.
Since you are pointing localhost
, the id must be also localhost
.
When you change the hostname, you must also update settings.xml.
Solution 2
Change
<server>
<id>Tomcat6.x</id>
<username>admin</username>
<password>admin</password>
</server>
to
<server>
<id>myserver</id>
<username>admin</username>
<password>admin</password>
</server>
If you are using tomcat 7 use
<url>http://localhost:8080/manager/html</url>
If tomcat 6
<url>http://localhost:8080/manager</url>
start tomcat run tomcat7:deploy or tomcat6:deploy
Solution 3
It's in the plugin configuration docs: the server/id
tag in Maven settings must match the configuration/server
value in your POM file, i.e. put <server>Tomcat6.x</server>
in POM file.
There are some other minor issues with your tomcat-maven-plugin
entry in the POM file:
- you are missing the
<version>1.1</version>
tag, - the
/html
suffix in the Tomcat manager URL is unnecessary (cf. the default value for<url>
tag).
Solution 4
When I was also running into this problem. My issue was using the older
<groupId>org.codehaus.mojo</groupId>
instead of using
<groupId>org.apache.tomcat.maven</groupId>
My setup is as follows
~/.m2/settings.xml
<settings>
<servers>
<server>
<id>localhost</id>
<username>tomcat</username>
<password>tomcat</password>
</server>
</servers>
</settings>
pom.xml
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<configuration>
<url>http://localhost:8080/manager</url>
<server>localhost</server>
<path>/myapppath</path>
</configuration>
</plugin>
tomcat/conf/tomcat-users.xml
<tomcat-users>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,manager-script,tomcat,manager"/>
</tomcat-users>
Related videos on Youtube
Umesh Awasthi
Updated on June 05, 2022Comments
-
Umesh Awasthi almost 2 years
i am learning tomcat basics and while i tried to deploy my web-application on tomcat i am getting the following error
[ERROR] Failed to execute goal org.codehaus.mojo:tomcat-maven-plugin:1.1:deploy (default-cli) on project struts2-demoapp: Cannot invoke Tomcat manager: Server returned HTTP response code: 401 for URL: http://localhost:8080/manager/html/deploy?path=%2FmkyWebApp&war= -> [Help 1] [ERROR]
as per this it seems war file location is not being passed to the tomcat manager.i have the following entries in my
tomcat-user.xml
tomcat-users> <user name="admin" password="admin" roles="admin,manager" /><!-- NOTE: The sample user and role entries below are wrapped in a comment and thus are ignored when reading this file. Do not forget to remove <!.. ..> that surrounds them. --> <role rolename="manager"/> <role rolename="admin"/> <user username="admin" password="admin" roles="admin,manager"/> </tomcat-users>
here are the details of the
pom.xml
<build> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <packagingExcludes>WEB-INF/web.xml</packagingExcludes> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <configuration> <warFile>${project.build.directory}/${project.build.finalName}.war</warFile> <url>http://localhost:8080/manager/html</url> <server>myserver</server> <path>/mkyWebApp</path> </configuration> </plugin> </plugins> </build>
in my setting.xml there are the entries
<server> <id>Tomcat6.x</id> <username>admin</username> <password>admin</password> </server>
i am not sure what exactly is going wrong here.any help in this regard will be helpful.
-
Umesh Awasthi over 12 yearsThanks Tarlog for the description :)