Подтвердить что ты не робот

WTP - m2e не развертывание транзитивных зависимостей

У меня есть веб-приложение, которое структурировано таким образом:

A.jar → B.war → C.war

Я использую Eclipse Juno, а версия WTP - 1.1. A.jar - это проект утилиты рабочего пространства, который включен в B.war. B.war - это военный проект, включенный C.war в качестве наложения. Это способ, который я делаю:

<dependency>
    <groupId>com.projects</groupId>
    <artifactId>B</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>war</type>
    <scope>runtime</scope>
</dependency>

После этого я развертываю проект C на сервере Tomcat. Это работает как шарм, если я вручную разворачиваю войну, созданную Maven, для Tomcat, потому что A.jar включен в WEB-INF/lib. Однако моя проблема возникает, когда я разрешаю m2e-wtp развертывание, потому что он правильно выполняет наложение, но не включает транзитивную зависимость A. Я попробовал включить его в качестве помпы, поскольку я читал где-то здесь, но у меня такой же результат.

<dependency>
    <groupId>com.projects</groupId>
    <artifactId>B</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>war</type>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>com.projects</groupId>
    <artifactId>B</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>pom</type>
</dependency>

Я использую новейшие версии m2e (1.2) и m2e-wtp (0.16), и мои проекты обновлены с конфигурацией Maven.

Это проблема с m2e-wtp или просто мне нужно организовать мой проект другим способом?


EDITED

Я заметил, что конфигурация m2e-wtp хранится в файле Eclipse project./settings/org.eclipse.wst.common.component. То, как он ищет мою войну:

<dependent-module deploy-path="/"
    handle="module:/overlay/prj/B?includes=**/**&amp;excludes=META-INF/MANIFEST.MF">
    <dependency-type>consumes</dependency-type>
</dependent-module>
<dependent-module deploy-path="/"
    handle="module:/overlay/slf/?includes=**/**&amp;excludes=META-INF/MANIFEST.MF">
    <dependency-type>consumes</dependency-type>
</dependent-module>

Как я вижу, зависимость войны установлена ​​на потреблять, в то время как зависимости jar зависят от использования.

Выпущенная версия m2e-wtp 0.17, похоже, не исправляет ее.


EDITED (2013-08-30)

Сегодня я вернулся к той же проблеме. Даже у меня есть Eclipse kepler, установленный с последняя стабильная версия WTP из коробки, эта проблема, похоже, сохраняется. Я думал, что это было решено, но я, по-видимому, его не знаю...

4b9b3361

Ответ 1

Я думаю, что это не проблема вашей проектной организации. Ваша проблема очень похожа на этот отчет об ошибках m2e-wtp .

Ответ 2

Кажется, это проблема Eclipse Juno и WTP Plugin.

У меня была та же проблема, и я решил таким образом:

  • Резервное копирование рабочего пространства eclipse и кода проекта
  • удалите проект из eclipse (без удаления содержимого)
  • откройте командный терминал (cmd)
  • запустить mvn eclipse: clean
  • запустить mvn eclipse: eclipse -Dwtpversion = 2.0
  • отредактируйте свой файл пути к eclipse с помощью текстового редактора:% PROJECT_PATH% \. classpath
  • удалите все строки с атрибутом вида = "var" из вашего файла .classpath. Например:

    < classpathentry kind = "var" path = "M2_REPO/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar" sourcepath = "M2_REPO/javax/servlet/servlet-api/2.5/servlet-api-2.5- sources.jar" /" >

  • сохранить файл и закрыть редактор.
  • в eclipse, нажмите на: file- > Import...- > Maven- > импортируйте существующий проект maven и снова импортируйте свой проект.
  • Maven → Обновить проект (если хотите)
В сборке развертывания в свойствах проекта eclipse вы можете увидеть, что проблема решена, и существуют зависимости maven.

Надеюсь, что это поможет.

Ответ 3

У меня также есть эта проблема. У меня уродливое обходное решение:

Поместите все исходные военные зависимости в отдельный проект (тип jar) и сделайте как исходную войну, так и наложенную войну. Итак, для примера:

A.jar → B.war → C.war

становится

A.jar → B-dependencies.jar (создан новый модуль, называемый B-зависимостями)

B-dependencies.jar → B.war

B-dependencies.jar → C.war

Обратите внимание, что это не относится к Tomcat; Я использую JBoss.