2010-11-08 1 views
0

У меня есть проект Spring MVC в Eclipse Galileo. Его дефекты указаны в pom.xml. Когда я печатаю mvn eclipse:eclipse, указаны как ссылки в пути построения Eclipse. Но когда я пытаюсь запустить это приложение на сервере (в Eclipse, run -> run на сервере), зависимостей не существует в пути класса, и поэтому я получаю ошибку classDefNotFound. Есть ли способ исправить эту проблему?Как скопировать зависимости в папку WEB_INF/lib в проекте Spring с Maven?

Большое спасибо!

ответ

3

Как скопировать зависимости в папку WEB_INF/lib в проекте Spring с Maven?

Нет необходимости в этом. И это было бы ужасным решением. Исправьте основную причину проблемы.

У меня есть проект Spring MVC в Eclipse Galileo. Его зависимости указаны в pom.xml. Когда я ввожу mvn eclipse: eclipse, зависимости задаются как ссылки в пути сборки Eclipse.

Странно, это не то, что я получаю. Можете ли вы показать содержимое своего .classpath? Типичная .classpath генерируется Maven Eclipse Plugin выглядит следующим образом:

<classpath> 
    <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/> 
    <classpathentry kind="src" path="src/main/java" including="**/*.java"/> 
    <classpathentry kind="output" path="target/classes"/> 
    <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/> 
    ... 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
</classpath> 

Я не вижу никакой «ссылки» здесь. Определяется ли в вашей среде M2_REPO?

Но когда я пытаюсь запустить это приложение на сервере (в Eclipse, запустить -> запустить на сервере) зависимости не существует в пути к классу, и именно поэтому я получаю classDefNotFound ошибку

I подумайте, что что-то еще не так. Но копирование зависимостей в WEB-INF/lib, конечно, не является правильным способом устранения проблемы.

0

Поскольку вы, кажется, есть проект Maven, вы можете использовать Eclipse, Maven плагин (M2Eclipse) и импортировать проект как проект Maven

сказанного, Выполняемые выше должны работали так же.

0

Вы добавили переменную classpath MAVEN_REPO в Eclipse? Если нет, то вы можете использовать Maven плагин, чтобы сделать так:

mvn -Dworkspace=/path/to/your/workspace eclipse:configure-workspace 

Посмотрите на Usage странице Maven-затмением-плагин для деталей!

1

Предлагаю вам взглянуть на M2Eclipse. Он предоставляет контейнер classpath с зависимостями maven проекта и, как правило, лучше интегрируется с Eclipse.

M2Eclipse classpath container

Ее основные функции являются:

  • Создания и импорта проектов Maven
  • управления зависимостями и интеграции с классами Затмения
  • автоматической загрузки зависимостей и обновления
  • Артефактом Javadoc и разрешение источника
  • Создание проектов с Maven архетипами
  • просмотр и поиск удаленных репозиториев Maven
  • управление POM с автоматическим обновлением в список зависимостей
  • материализации проекта из Maven POM
  • извлекает проект Maven из нескольких хранилищ SCM
  • Адаптация вложенных Maven проектов мульти-модуль для Eclipse IDE
  • Интеграция с Web Tools Project (WTP)
  • Интеграция с Subclipse и подрывных
  • Интеграция с Mylyn
  • основе форм POM Редактор
  • Графическое отображение DEPENDENCY графах
  • GUI Презентация Dependency Tree и Устранены зависимостями

maven-eclipse-plugin is scheduled to be deprecated and later on retired, поэтому было бы целесообразно, чтобы посмотреть на что-то которые будут поддерживаться в ближайшем будущем.

+0

Хмм ... Я не уверен, что «затмение: затмение» скоро исчезнет (я склонен согласиться с Арно здесь, а не с Джейсоном). –

1

У меня была аналогичная проблема с проектом maven на IRAD. Щелкните правой кнопкой мыши проект War, выберите свойства. В разделе «Зависимости модуля Java EE» установите флажок помимо «Зависимости Maven». Это должно скопировать папку lib в целевое местоположение на сервере во время развертывания.

Я использую IRAD, поэтому не уверен, что это относится к IRAD или доступно на Eclipse.

Смежные вопросы