Зависимости Maven не отображаются в WEB-INF/lib
У меня возникла эта странная проблема, создающая мой проект на основе Maven. Я создал новый проект Maven в Eclipse и включил факс Dynamic Web. Но во время выполнения он бросает ClassNotFoundException
, потому что зависимости Maven не копируются в каталог WEB-INF/lib
. Я даже попытался добавить раздел копий-зависимостей в POM, но это не помогло.
Кто-то здесь, похоже, решил это правильно, но, я думаю, он забыл упомянуть решение:: (
Ответы
Ответ 1
Это не должно иметь ничего общего с eclipse и m2eclipse и, возможно, для лучшей поддержки - m2e-wtp. Кроме того, вам не нужны копии. Вот несколько возможных причин:
- вы должны вызвать
mvn package
(или щелкните правой кнопкой мыши > maven > пакет) и получить военный файл - <packaging>
(в pom) должен быть war
- ваши зависимости должны быть с областью по умолчанию (если они
provided
или test
, они не будут включены в архив)
- Если вы запускаете проект как динамический веб-проект на сервере в eclipse, вам следует открыть свойства проекта (щелкните правой кнопкой мыши > свойства) и выберите "Сборка развертывания". Нажмите "добавить", выберите "Записать путь к записям" и выберите "зависимости от maven". Это даст указание WTP отправлять зависимости maven в директорию сервера.
Ответ 2
Сначала установите Maven Integration для Eclipse WTP (Help- > Eclipse Marketplace)
Затем в вашем веб-проекте pom.xml просто добавьте:
<packaging>war</packaging>
После этого просто щелкните правой кнопкой мыши проект, Maven → Update Project, который должен автоматически добавить Maven Dependencies для вас в сборке развертывания.
Ответ 3
Щелкните правой кнопкой мыши проект > Maven > Обновить проект Maven > OK исправил его для меня
Ответ 4
Проверьте свойство сборки развертывания проекта. Я видел, что в некоторых проектах Eclipse, созданных с помощью mvn eclipse:eclipse
, иногда развертываются активы в неправильном месте. Из того, что я помню, новая сборка Deployment имела некоторые проблемы с более ранними версиями Eclipse 3.6 (Helios).
Ответ 5
Я только что сделал проект maven → update для меня.
Ответ 6
вы хотите использовать плагин-зависимостей
см. этот и docs
Ответ 7
Если вы посмотрите на свое развертывание и увидите, что WEB-Inf/lib не содержит ваших зависимостей Maven, то обеспечение этих зависимостей Maven в вашей сборке развертывания имеет решающее значение, как упоминание в выбранном ответе.
Однако будьте осторожны с Eclipse, а затем не обновляйте все, даже с обновлением Maven. Если вы очищаете, перестраиваете и повторно развертываете и не видите, что папка lib заполняется, попробуйте удалить и повторно добавить приложение к развертываниям сервера через серверы > Добавить и удалить.
Это прочистило систему для меня.