Запустите файл WAR в / target каталоге проекта Maven от Tomcat - PullRequest
6 голосов
/ 16 апреля 2011

Я занимаюсь разработкой веб-приложения с системой сборки Java и Maven, а веб-сервер - Tomcat 7.0.12.После упаковки всего проекта в файл WAR в каталог \ target с помощью команды сборки Maven мне нужно скопировать его в папку webapps домашней страницы Tomcat, чтобы запустить его.Это очень неудобно, особенно когда я изменил некоторые исходные файлы, потому что мне нужно делать все эти вещи (сборка, копирование в Tomcat, запуск его) снова.Я исследовал некоторые статьи о Maven, Tomcat, Eclipse по этой проблеме, но результата нет.Не могли бы вы помочь мне: 1. Как заставить Tomcat запустить WAR-файл в целевой директории проекта, которая создается командой Maven напрямую?Нет необходимости копировать / вставлять файл WAR и перезапускать Tomcat?2. Как я могу настроить Tomcat для отладки веб-приложения в Eclipse?Большое спасибо!

Кстати, я прочитал и много раз пытался настроить Tomcat, Maven и pom file.Но я не знаю, какова точная конфигурация, потому что есть так много советов!Не могли бы вы предоставить конкретный пример конфигурации для меня?Вот мои файлы конфигурации:

Tomcat tomcat-users.xml

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

Maven settings.xml

tomcat admin

И pom.xmlфайл проекта:

<build>
      <finalName>my-project</finalName>
      <defaultGoal>package</defaultGoal>
      <plugins>
         <plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>tomcat-maven-plugin</artifactId>
       <version>1.1</version>
       <configuration>
          <server>tomcat</server>  
              <warFile> ${project.build.directory}/${project.build.finalName}.war</warFile>
       </configuration>
     </plugin>
      </plugins>
   // Other plugins
   </build>

Подробнее: Если я запускаю mvn tomcat: deploy перед запуском экземпляра Tomcat, возвращается ошибка «Невозможно вызвать менеджер Tomcat: соединение отклонено: соединение.»В противном случае, если экземпляр Tomcat был запущен до вызова mvn tomcat: deploy, возникает ошибка «Невозможно вызвать менеджер Tomcat: сервер вернул код ответа HTTP: 403 для URL: http://localhost:8080/manager/deploy?path=%2Fmy-project&war=..."

Ответы [ 2 ]

4 голосов
/ 16 апреля 2011

Есть несколько способов сделать это.

Плагин tomcat maven http://mojo.codehaus.org/tomcat-maven-plugin/ предоставляет вам способ развертывания напрямую в tomcat из maven.Сначала вы должны настроить пользователей tomcat.См. http://tomcat.apache.org/tomcat-7.0-doc/config/realm.html для инструкций по настройке ваших пользователей.

Для отладки вы можете запустить tomcat с аргументами, указанными в http://wiki.apache.org/tomcat/FAQ/Developing

Другим способом будет настройка tomcatуказать на вашу войну.См. http://tomcat.apache.org/tomcat-7.0-doc/config/context.html, в частности параметр docbase .

РЕДАКТИРОВАТЬ 1 Исходя из пересмотренного вопроса, http 403 запрещен, это означает, что вы не прошли аутентификацию правильно.

Измените ваш tomcat-users.xml так, чтобы он выглядел следующим образом:

Вам необходимо добавить ссылку на имя пользователя / пароль в файле pom.xml.Ваш файл settings.xml должен содержать (в зависимости от вашей конфигурации)

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

Вот хорошая страница http://www.avajava.com/tutorials/lessons/how-do-i-deploy-a-maven-web-application-to-tomcat.html, которая объясняет это более полно.Однако информация может быть устаревшей.

2 голосов
/ 19 октября 2011

Я столкнулся с точно такой же проблемой.

Полагаю, это делает плагин eclipse-tomcat. И я понятия не имею, почему он работает по-другому в tomcat 7, в отличие от tomcat 6, с которым у меня не было проблем.

В любом случае, я должен был встроить maven в каталог / web-app / WEB-INF

<build>
    <directory>${basedir}/src/main/webapp/WEB-INF</directory>
...
</build>

После этой конфигурации eclipse: eclipse должен дать правильный файл проекта / classpath eclipse ресурсы: ресурсы также должны работать соответственно.

...