Странное поведение развертывания зависимостей Eclipse WTP на сервере Tomcat - PullRequest
6 голосов
/ 01 апреля 2011

У меня странное поведение в процессе развертывания Tomcat, выполняемого моей Eclipse WTP.Я использую Eclipse 3.7 (Indigo), WTP 3.3, no m2eclipse plugin, Java 1.6, Tomcat 5.5.

Мое приложение - это веб-приложение, которое также имеет в качестве зависимостей некоторые другие проекты.как некоторые сторонние зависимости.Мой проект управляется Maven, и все работает нормально, когда мы создаем приложение с помощью этого инструмента.

Для работы над моим проектом с использованием Eclipse я запускаю mvn eclipse:clean eclipse:eclipse, а затем импортирую свои проекты в IDE.

Моя проблема возникает, когда я хочу развернуть это веб-приложение на сервере Tomcat 5.5 (этот сервер управляется Eclipse).Когда я создаю новый сервер Tomcat и развертываю на нем мое приложение my-project-portal , оно добавляет только зависимости my-project-xxx , а также несколько сторонних разработчиков.зависимости (около 9 из сотен определены).На рабочем столе одного из моих коллег (он использует Eclipse 3.5) сторонние зависимости вообще не развертываются, только my-project-xxx JAR ...

Однако, когдаЯ просматриваю свойства проекта веб-приложения: в Путь сборки Java> Библиотеки или в «Сборке развертывания» список зависимостей правильный и полный.

Примечания

Я провел несколько тестов со старым Eclipse (3.3, с WTP 3.1), и у меня не возникло проблем с развертыванием.Однако этот WTP все еще использовал «Зависимости модулей Java EE», что не относится к последней версии WTP.

До сих пор мы использовали собственный плагин Maven после mvn eclipse:eclipse, который копирует всезависимости (в том числе переходные) в my-webapp-project/WebContent/WEB-INF/lib.В результате Eclipse автоматически развернул содержимое этих зависимостей, и, таким образом, мы получили все зависимости на сервере Tomcat.

Вопросы

  • Что не такс моим процессом?
  • Действительно ли мне нужно скопировать все зависимости в каталоге WEB-INF/lib?
  • Что такое обычная процедура, когда мы хотим развернуть вебприложение на сервере Tomcat, использующее Eclipse?

Вот выдержка из моих файлов конфигурации Eclipse после запуска mvn eclipse:eclipse:

.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src/main/java"/>
    <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/asm/asm/2.2.2/asm-2.2.2.jar" sourcepath="M2_REPO/asm/asm/2.2.2/asm-2.2.2-sources.jar"/>
    <classpathentry kind="src" path="/my-project-business"/>
    ...
    <classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
</classpath>

.settings / org.eclipse.wst.common.component

<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module deploy-name="my-project-portal">
    <property name="context-root" value="my-project-portal"/>
    <wb-resource deploy-path="/" source-path="/WebContent"/>
    <property name="java-output-path" value="/WebContent/WEB-INF/classes"/>
    <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar">
      <dependency-type>uses</dependency-type>
    </dependent-module>
    ...
    <dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/my-project-business/my-project-business">
      <dependency-type>uses</dependency-type>
    </dependent-module>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
  </wb-module>
</project-modules>

1 Ответ

0 голосов
/ 13 сентября 2011

Я думаю, что у вас проблема с неправильной настройкой, потому что:

  • Если ваш проект управляется maven, вам никогда не понадобится устанавливать ваш .classpath с зависимостями, необходимыми для этого инструмента, напримересли вам нужна другая библиотека или изменить ее версию, вам нужно будет обновить конфигурацию в вашем проекте eclipse и т. д. То же самое для вашего файла org.eclipse.wst.common.component.

Я думаю, вам нужно будет установить поддержку WTP для m2eclipse, как говорит @stivlo, конечно же, установите m2eclipse и просмотрите конфигурацию вашего проекта, потому что вам нужно удалить все зависимости, определенные в этих файлах.

Сейчас я никогда не копирую все зависимости в каталоге / WEB-INF / lib, потому что я не хочу следить за этим каталогом.Например, когда мне нужно запустить Tomcat, плагин m2eclipse автоматически развертывает все библиотеки и различия (то есть статические файлы, классы, файлы ресурсов и т. Д.) Во внутреннем каталоге Eclipse, и все, сервер запускается с контекстомсо всеми необходимыми файлами.Для удобства я всегда использую плагины, связанные с Eclipse.

...