Зависимости веб-проекта Eclipse

Этот вопрос касается разработки Eclipse, я пытаюсь создать веб-приложение в Eclipse, проблема в том, что я не получаю jar-файлы с зависимостями в развернутом архиве.

Я создал новый динамический веб-проект и связал его с другим проектом Java. Проект Java ссылается на несколько сторонних jar-файлов (например, Spring jar-файлов), но по некоторым причинам при публикации веб-проекта я получаю только jar-файл проекта Java в каталоге lib войны, без зависимостей проекта Java (например, Spring).

Другими словами, у меня есть проект A (веб-проект), который зависит от проекта B (Java Project), проект B зависит от jar-файлов Spring. Когда я публикую веб-проект как войну с JBoss, только проект B упаковывается в банку (без весенних банок)

Я знаю, что могу сделать это с помощью ant, у меня даже есть такой build.xml для создания всего приложения, но я думал, что eclipse может также выполнить задачу упаковки за меня.

Я добавил проект Java в зависимости модуля Java EE в веб-проекте.

Следует ли использовать параметр экспорта в свойствах пути сборки проекта Java? следует ли мне также добавить в веб-проект зависимости проекта Java?

Что я делаю неправильно?

Изменить: я использую Eclipse 3.5.1


person LiorH    schedule 07.11.2009    source источник
comment
Также рассмотрите этот вопрос: http://stackoverflow.com/questions/1691553/java-web-project-referencing-another-java-project.   -  person João Silva    schedule 07.11.2009
comment
Я видел этот вопрос, добавление зависимостей в зависимости модуля Java EE просто не решает мою проблему   -  person LiorH    schedule 07.11.2009
comment
Вероятно, вам также нужно было добавить jar-файлы Spring в список зависимостей веб-проекта. Возможно, они не были переходными.   -  person nitind    schedule 10.05.2014


Ответы (6)


  1. Перейдите в свойства веб-проекта.
  2. Развертывание в сборе (слева).
  3. Добавить> Выбрать проект> Выбрать проект библиотеки> Отметьте «Собрать проекты в папку WEB-INF / lib веб-приложения», если не отмечено> Готово.
  4. Путь сборки Java (слева)> вкладка "Проекты"> "Добавить ...>" Выберите проект библиотеки> ОК
  5. Путь сборки Java (слева)> вкладка «Порядок и экспорт»> Выберите проект библиотеки.
  6. Сохранить
  7. Теперь это работает.
person Rod Lima    schedule 29.06.2011

Я знаю, что прошло четыре года с момента последней публикации, и, возможно, эта опция тогда не была доступна, но вот что сработало для меня:

  1. Перейдите в веб-проект-> Свойства
  2. Сборка развертывания
  3. Используйте кнопку «Добавить», чтобы добавить зависимость вашего проекта.
  4. Перейдите в Project-> Properties для проекта, от которого вы зависите.
  5. Deployment Assembly
  6. Используйте кнопку «Добавить», чтобы добавить зависимости библиотеки времени выполнения проекта.
  7. Веб-проект-> Запуск от имени ..-> Запуск на сервере, и это сработало для меня

Имейте в виду, что шаги 4-6 будут означать, что если вы используете eclipse для создания своего файла jar, он теперь будет включать ваши зависимые библиотеки в этот jar.

Спасибо rodgarcialima за то, что помогли мне перейти к шагу 3.

person George    schedule 09.07.2013
comment
Привет, Джордж, есть ли другой способ скопировать библиотеку упомянутых проектов в веб-проект? - person Ramesh Lingappa; 23.06.2014
comment
Как насчет того, когда мы создаем файл войны и нам нужно включить другие проекты? - person Niamath; 01.11.2016

Я добавил проект Java в зависимости модуля Java EE в веб-проекте.

Если цель состоит в том, чтобы перенести зависимости (читайте: файлы JAR / проекты / и т. Д.) другого проекта в путь к классам среды выполнения текущего проекта, то только в этом случае не работает. Вам необходимо настроить другой проект на экспорт его зависимостей. Это делается с помощью вкладок «Порядок» и «Экспорт» в свойствах пути сборки. Надеюсь это поможет.

person BalusC    schedule 07.11.2009

Также обратите внимание на эту ошибку, сообщенную в Eclipse WTP, которая иногда препятствует развертыванию ваших зависимостей в WEB-INF / lib, даже если вы все настроили правильно. Вздох.

Ошибка 312897 - функция развертывания не развертывает зависимости пути к классам.

Насколько я понимаю, чтобы использовать JAR во время компиляции в Eclipse и убедиться, что он также доступен во время выполнения на сервере приложений, вы:

  • Добавьте JAR в свой путь сборки
  • Отметить JAR как экспортированную зависимость модуля EE

Если вам нужны JAR-файлы, которые необходимы другому проекту, который вы используете, я бы лично перечислил их как явные зависимости в пути сборки, а также добавил бы их к зависимостям экспортированного модуля.

Но не принимайте мой ответ за чистую монету, поскольку я наткнулся на этот пост в поисках причины, по которой я получаю ошибки NoClassDefFound в моем проекте Eclipse ...;)

person Stijn de Witt    schedule 14.09.2010

Перед развертыванием вы должны упаковать свое веб-приложение в файл WAR. Должен быть способ сообщить Eclipse, какие файлы JAR вы хотите поместить в каталог WEB-INF / lib. Если нет, напишите Ant build.xml, который сделает это за вас.

Вам не нужно изменять какие-либо переменные пути к классам ни в вашей среде, ни на сервере приложений. Правильный способ сделать это - создать правильный файл WAR.

ОБНОВЛЕНИЕ: я перечитал ваш вопрос:

но по некоторым причинам при публикации веб-проекта я получаю только java-проект jar в каталоге lib JBoss без его jar-файла зависимостей (например, Spring).

Что это значит? Вы не должны ничего помещать в каталог JBOSS / lib. Весь смысл файла WAR в том, что это самодостаточный артефакт, который несет в себе все его зависимости. Если вы пытаетесь записать что-то в каталог JBOSS / lib, вы делаете это неправильно.

Файл WAR должен попасть в домен, который вы настроили. Нет необходимости изменять сервер приложений.

person duffymo    schedule 07.11.2009
comment
У меня есть ant-скрипт, который делает это хорошо, проблема во времени разработки, я хочу упаковать и опубликовать его из eclipse (а затем, конечно, отладить приложение) - person LiorH; 07.11.2009
comment
Eclipse сможет сделать это без Ant. Если нет, получите настоящую IDE и загрузите IntelliJ. Он прекрасно справляется со всем этим. - person duffymo; 07.11.2009
comment
Вы правы в своем обновлении, я имел в виду каталог lib файла войны (в WEB-INF), а не каталог JBoss lib, конечно. Исправил описание вопроса, спасибо. - person LiorH; 07.11.2009
comment
@LiorH - очень хорошо, спасибо за объяснение. Должен признаться, я озадачен. Вы говорите, что ваш сценарий Ant справляется с этим хорошо, но у вас все еще есть проблема. Если я не совсем понимаю, что происходит, либо вам придется надеяться, что более умный человек дразнит ответ, либо добавит подробностей к вашему вопросу. Честно говоря, я не знаю, что происходит. - person duffymo; 07.11.2009

Если я правильно вас понял, проблема в том, что если вы используете проект A, который, в свою очередь, зависит от проекта B, вы не получаете артефакты из проекта B, а только A.

Проблема в том, что ваш проект должен перечислить ВСЕ необходимые ему вещи в разделе «Свойства» -> «Зависимости модуля Java EE», что является отдельным механизмом от обычного экспорта проекта. Возможно, вам придется поэкспериментировать.

person Thorbjørn Ravn Andersen    schedule 07.11.2009