Переходные зависимости проекта в Eclipse WTP
Я создал кучу проектов в Eclipse 3.7.2. Давайте дадим некоторым из них имя:
- W (динамический веб-проект)
- A (некоторая библиотека)
- B (библиотека с большим количеством общего материала, который используется и другими проектами)
Проект A зависит от проекта B, поэтому B находится в пути сборки A. Проект W зависит от проекта A, поэтому я добавил сборку развертывания в W.
Когда я экспортирую войну из Eclipse, добавляется только файл JAR для A WEB-INF / lib. Eclipse показывает следующее предупреждение:
Запись classpath /б не будет экспортировать и публиковать. Во время выполнения ClassNotFoundExceptions может привести.
Предупреждение верно. Я получаю ClassNotFoundExceptions во время выполнения. Конечно, Eclipse предоставляет быстрое исправление для предупреждения ,которое "помечает связанную запись raw classpath как зависимость публикации / экспорта". Однако это не решает мою проблему. B все еще не развертывается с W.
Я попробовал вручную добавление B в качестве сборки развертывания в A . Это включает в себя B.jar внутри A.jar это не совсем то, чего я хочу, и я все еще получаю ClassNotFoundExceptions.
Единственное, что работает, - это добавление вручную B в качестве сборки развертывания в W. Eclipse по-прежнему показывает предупреждение сверху, но исключения среды выполнения исчезли.
Я что-то упустил или это действительно единственный способ заставить это работать?
1 ответ:
Чтобы заставить Eclipse "Export / Web / WAR File" работать, вы должны сделать так, чтобы ваш проект "b" появился в контейнере "Web App Libraries".
Вы можете изменить конфигурацию развертывания с помощью страницы сборки развертывания в свойствах проекта и добавить туда свой проект "b":
Кроме того, вы можете открыть конфигурационный файл по адресу
/w/.settings/org.eclipse.wst.common.component
и добавить ссылку на проект "b" вручную:<?xml version="1.0" encoding="UTF-8"?> <project-modules id="moduleCoreId" project-version="1.5.0"> <wb-module deploy-name="w"> <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/> <dependent-module archiveName="a.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/a/a"> <dependency-type>uses</dependency-type> </dependent-module> <dependent-module archiveName="b.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/b/b"> <dependency-type>uses</dependency-type> </dependent-module> <property name="context-root" value="w"/> <property name="java-output-path" value="/w/build/classes"/> </wb-module> </project-modules>
Как только это будет сделано, вы увидите проект "b" в "веб-приложении Библиотеки " контейнер classpath и экспорт в файл WAR также добавят b.jar в WEB-INF / lib.