Maven tomcat7: развертывание завершается с отказом доступа

У меня есть tomcat7. Доступ к менеджерскому приложению (http://localhost: 7777/manager/html) отлично работает с учетными данными, определенными в tomcat-users.xml.

Теперь я хочу развернуть приложение с maven3. Я настроил плагин tomcat maven:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.0-beta-1</version>
    <configuration>
        <url>http://localhost:7777/manager</url>
        <server>localhost7777</server>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat6-maven-plugin</artifactId>
    <version>2.0-beta-1</version>
    <configuration>
        <url>http://localhost:7777/manager</url>
        <server>localhost7777</server>
    </configuration>
</plugin>

В mavens setting.xml я добавил запись для сервера:

<servers>
    <server>
        <id>localhost7777</id>
        <username>manager</username>
        <password>secret</password>
    </server>
</servers>

Теперь приложение будет успешным. Но цель tomcat7: deploy приводит к сообщению об отказе в доступе от tomcat:

...
[INFO] Deploying war to http://localhost:7777/workload-monitor  
Uploading: http://localhost:7777/manager/deploy?path=%2Fworkload-monitor&update=true
Uploaded: http://localhost:7777/manager/deploy?path=%2Fworkload-monitor&update=true (2329 KB at 55435.1 KB/sec)

[INFO] <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
[INFO] <html>
[INFO]  <head>
[INFO]   <title>403 Access Denied</title>
[INFO]   <style type="text/css">
[INFO]     <!--
...

Может ли кто-нибудь дать мне подсказку?

Ответ 1

Не отвечая на вопрос, проблема, похоже, связана с тем, что tomcat:deploy пытается развернуть webapp до http://localhost:7777/manager/deploy, а tomcat7 - URL-адрес развертывания http://localhost:777/manager/html/deploy. Кажется, что нет способа указать это как конфигурацию плагина.

Ответ 2

Чтобы ответить на этот вопрос, я на самом деле столкнулся с этой проблемой, настроив свой ящик ubuntu недавно, и мое решение вместо /html было на самом деле указывать на /text: Code:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>tomcat-maven-plugin</artifactId>
    <version>1.1</version>
    <configuration>
      <url>http://localhost:8080/manager/text</url>
      <username>admin</username>
      <password>admin</password>
    </configuration>
  </plugin>

Ответ 3

Решение, описанное в http://mycodenotes.wordpress.com/2011/01/25/mvn-tomcatdeploy-to-tomcat-7/, работало для меня.

Плагин mvn tomcat-maven-plugin отлично работает с tomcat 5.5, но при попытке развернуть его в экземпляр tomcat 7 он дает ошибку 403. Оказывается, tomcat 7 изменил URL-адреса для развертывания, поэтому вам нужно настроить плагин для использования этого другого URL-адреса. Вы можете сделать это со следующей конфигурацией плагина:

<plugin> 
   <groupId>org.codehaus.mojo</groupId> 
   <artifactId>tomcat-maven-plugin</artifactId> 
   <configuration> 
      <url>http://localhost:8080/manager/html</url> 
   </configuration> 
</plugin>

Магия находится в настройке URL, которая теперь использует /manager/html, а не по умолчанию URL-адрес just/manager. Исходный источник для этой информации: http://www.jroller.com/Fabszn/entry/tomcat_7_et_le_plugin

Ответ 4

Это работает со следующими настройками:

MAVEN_HOME/CONF/settings.xml:

 <server>
     <id>myTomcat</id>
     <username>admin</username>
     <password>admin</password>
 </server>

TOMCAT_HOME/CONF/кот-users.xml:

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script" />

pom.xml:

  <pluginManagement>
     <plugins>
        <plugin>
           <groupId>org.apache.tomcat.maven</groupId>
           <artifactId>tomcat7-maven-plugin</artifactId>
           <version>2.1</version>
           <configuration>
              <server>myTomcat</server>
              <url>http://localhost:8080/manager/text</url>
              <path>/${project.build.finalName}</path>
           </configuration>
        </plugin>
     </plugins>
  </pluginManagement>

Развертывание с помощью

mvn clean install tomcat7:redeploy