Зависимости веб-проектов Eclipse
Этот вопрос касается разработки Eclipse, я пытаюсь создать веб-приложение в Eclipse, проблема в том, что я не получаю баны зависимостей от развернутого архива.
Я создал новый динамический веб-проект и связал его с другим проектом Java. Проект Java ссылается на несколько сторонних баннеров (например, Spring jars), но по некоторым причинам при публикации веб-проекта я получаю только Java-проект jar в lib dir войны без зависимостей проекта Java (например, Spring).
Другими словами, у меня есть проект A (веб-проект), который зависит от проекта B (Java Project), проект B зависит от флагов Spring. Когда я публикую веб-проект в качестве войны с JBoss, только проект B упаковывается в банку (без Spring банок)
Я знаю, что могу сделать это с помощью ant, у меня даже есть такой build.xml
для создания всего приложения, но я думал, что eclipse также может выполнять задачу упаковки для меня.
Я добавил проект Java к зависимостям модуля Java EE в веб-проекте.
Должен ли я использовать параметр экспорта в свойствах пути построения проекта Java? Должен ли я добавлять зависимости проекта Java к веб-проекту?
Что я делаю неправильно?
Изменить: я использую Eclipse 3.5.1
Ответы
Ответ 1
- Перейдите в свойства веб-проекта.
- Развертывание сборки (слева).
- Добавить > Выбрать проект > Выбрать проект lib > Проверить "Собирать проекты в папку WEB-INF/lib веб-приложения", если не отмечен > Готово.
- Путь сборки Java (слева) > вкладка "Проекты" > "Добавить..." > выберите проект lib > OK
- Путь сборки Java (слева) > вкладка "Заказ и экспорт" > Выберите проект библиотеки.
- Сохранить
- Теперь это работает.
Ответ 2
Я знаю, что прошло четыре года со времени последнего сообщения, и, возможно, этот вариант не был доступен тогда, но вот что сработало для меня:
- Перейдите в веб-проект- > Свойства
- Развертывание сборки
- Используйте кнопку "Добавить", чтобы добавить зависимость от проекта.
- Перейдите в Project- > Properties для проекта, в зависимости от
-
Deployment Assembly
- Используйте кнопку "Добавить", чтобы добавить зависимости библиотеки выполнения проекта
- Web Project- > Run As..- > Run On Server, и это сработало для меня.
Будем предупреждать, что шаги 4-6 означают, что если вы используете eclipse для создания файла jar, теперь он будет включать ваши зависимые библиотеки в эту банку.
Спасибо rodgarcialima за то, что помогли мне добраться до шага 3.
Ответ 3
Я добавил проект Java к зависимостям модуля Java EE в веб-проекте.
Если целью является принятие зависимостей (чтение: JAR файлы/проекты/etc) другого проекта в путь класса выполнения текущего проекта, то только этот способ не работает. Вам нужно настроить другой проект на экспортировать его зависимости. Это делается на вкладке "Заказ" и "Экспорт" в свойствах пути сборки. Надеюсь, это поможет.
Ответ 4
Также обратите внимание на эту ошибку, сообщенную в Eclipse WTP, которая иногда препятствует развертыванию ваших зависимостей в WEB-INF/lib, даже если вы все правильно настроили. Вздох.
Ошибка 312897 - Функция развертывания не устанавливает зависимости типа classpath.
Как я понимаю, чтобы использовать JAR во время компиляции в Eclipse и убедиться, что он также доступен во время выполнения на сервере приложений, вы:
- Добавьте JAR в путь сборки
- Отметить JAR как зависимость экспортированного EE-модуля
Если вам нужен JAR, который нужен другому проекту, который вы используете, я лично перечислю их как явные зависимости в пути сборки, а также добавлю их в зависимости от экспортируемого модуля.
Но не принимайте мой ответ по номиналу, когда я наткнулся на этот пост, ища причину, по которой я получаю ошибки NoClassDefFound в моем проекте Eclipse...;)
Ответ 5
Перед развертыванием вы должны упаковать свое веб-приложение в WAR файл. Должен быть способ сообщить Eclipse, какие JAR файлы вы хотите разместить в каталоге WEB-INF/lib. Если нет, напишите Ant build.xml, который сделает это за вас.
Вам не нужно изменять какие-либо переменные pathpath в вашей среде или на сервере приложений. Правильный способ сделать это - создать правильный файл WAR.
ОБНОВЛЕНИЕ: я перечитываю ваш вопрос:
но по некоторым причинам при публикации веб-проекта я получаю только java-проект jar в lib-каталоге JBoss без его javascript-зависимостей (например, Spring).
Что это значит? Вы не должны помещать что-либо в каталог JBOSS/lib. Весь смысл файла WAR состоит в том, что он представляет собой самосодержимый артефакт, который несет во всех своих зависимостях. Если вы пытаетесь записать материал в каталог JBOSS/lib, вы делаете это неправильно.
Файл WAR должен войти в домен, который вы создали. Не нужно изменять сервер приложений.
Ответ 6
Если вы правильно поняли, проблема в том, что если вы используете проект A, который, в свою очередь, зависит от проекта B, вы не получаете артефакты из проекта B, а только A.
Проблема заключается в том, что ваш проект должен отображать ВСЕ, что ему нужно, в свойствах Свойства → Java EE, что является отдельным механизмом из обычного экспорта проекта. Вероятно, вам придется провести некоторое экспериментирование.