Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tomcat-maven-plugin 401 error

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.

like image 201
Umesh Awasthi Avatar asked Sep 07 '11 17:09

Umesh Awasthi


3 Answers

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

like image 77
Mustafa SAHIN AYDIN Avatar answered Sep 21 '22 08:09

Mustafa SAHIN AYDIN


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.

like image 44
Tarlog Avatar answered Sep 23 '22 08:09

Tarlog


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:

  1. you are missing the <version>1.1</version> tag,
  2. the /html suffix in the Tomcat manager URL is unnecessary (cf. the default value for <url> tag).
like image 39
trybik Avatar answered Sep 23 '22 08:09

trybik