Как я добираюсь, знаток управлял зависимостями, скопированными в war\web-inf\lib, таким образом, я могу запустить свое приложение GWT 2.0 в режиме отладки в Eclipse?

Я обновляю существующий проект от GWT 1.5.2 к GWT 2.0.0. Мы используем знатока 2, чтобы управлять нашими зависимостями и сделать всю нашу разработку в Eclipse 3.5.

Поскольку мы используем знатока для управления нашими зависимостями, у меня нет всех тех банок в war\web-inf\lib каталоге, поскольку GWT определяет. Вместо этого они находятся в репозитории знатока, где знатоку нравятся они. У меня есть проект, настроенный так, чтобы знаток мог успешно создать и запуститься или в dev или в веб-режиме и выполнении приложения правильно.

Проблема состоит в том, что, когда я запускаюсь от Eclipse, я получаю java.lang. NoClassDefFoundError. Если я вручную копирую своих зависимостей в war\web-inf\lib перед запуском, все хорошо работает, но это не предоставляет себя долгосрочному решению. Во-первых, если я проверяю все те банки в наше управление версиями, которое будет ниспровергать большую часть значения, мы добираемся от знатока. Столь раздражающий, как знаток может быть, угробив его, не ответ. Во-вторых, имеющие разработчики вручную копируют их за каждый раз, когда они хотят отладить что-то, смешно.

Таким образом, я могу заставить Eclipse копировать зависимости в war\web-inf\lib перед запуском? Существует ли альтернативное решение, которое я пропускаю?

Спасибо,

Tony

15
задан Tony 5 January 2010 в 20:24
поделиться

5 ответов

[

] Выполнение цели []gwt:eclipse[] скопирует зависимости maven в [] war/WEB-INF/lib[]. См. раздел []Eclipse Configuration[] документации []Eclipse IDE Integration[] плагина []Maven GWT[] для получения более подробной информации. Также посмотрите на []этот ответ[] о []Maven GWT 2.0 и Eclipse[].[

].
11
ответ дан 1 December 2019 в 04:17
поделиться

IDE (идея, затмение, нетто-бобы) должна делать эту упаковку автоматически. может быть, вы:

  • забыли включить импорт maven внутри IDE?
  • не добавили эти зависимости в pom.xml (поэтому они не включены в фазу 'mvn package')
  • добавили неправильную область применения декларации зависимостей (например, scope 'provided' или 'test'), поэтому они игнорируются во время выполнения
2
ответ дан 1 December 2019 в 04:17
поделиться
[

] Вы должны установить []m2eclipse плагин [] и использовать его для построения проекта в eclipse. Это вызовет maven как внешний инструмент изнутри eclipse.[

] [

]Тип артефакта вашего проекта maven должен быть установлен на war, что позволит maven обнаружить зависимости и связать их.[

] [

]Смотрите эти ссылки: [

] [

][]заставить Maven2 скопировать зависимости в target/lib[] [

] [

][]http://maven.apache.org/plugins/maven-war-plugin/[][

] [

][]http://maven.apache.org/plugins/maven-war-plugin/examples/rapid-testing-jetty6-plugin.html[][

]
2
ответ дан 1 December 2019 в 04:17
поделиться
[

] Это не должно быть проблемой. Если вы используете Eclipse+WTP, то WTP позволяет объявить в свойствах проекта банки, перечисленные в разделе 'J2EE модульная зависимость'. Эти банки автоматически публикуются в tomcat (см. примечание в конце этого комментария). Вам нужно объявить переменную M2_REPO в вашем окружении eclipse (ищите в справке eclipse 'переменные classpath'), она должна указывать на ваш локальный репозиторий maven, и просто добавьте оттуда внешние банки в ваш проект и пометьте их как 'J2EE-зависимости'. Я сделал это с кучей проектов, Maven и Eclipse живут бок о бок :) (без m2eclipse)[

] [

]Второй вариант - попытаться интегрировать Eclipse и Maven с плагином m2eclipse, как уже упоминалось, но я нашел это ненужным.[

] [

]Есть третий вариант, если вы не используете WTP (но вы должны). Предполагая, что вы используете tomcat, вы можете скопировать эти банки в $(tomcat.home)/общее/либ. Если вы можете сделать это только для вашего личного экземпляра tomcat (на каждой машине разработчика), то вы можете идти. Предполагается, что это будет малоэффективное решение, которое заставит эти банки попасть в classpath во время выполнения, но оно плохо масштабируется.[

] [

]Примечание: к сожалению, classpath веб-проектов Eclipse может сбить с толку. Когда вы добавляете банки в обычный путь сборки проекта, они не устанавливаются (не копируются) в tomcat. Для решения этой проблемы WTP определяет специальную библиотеку под названием Webapp Library - эта библиотека содержит все банки в WEB-INF/lib папке проекта, а также все внешние банки, помеченные как J2EE Module Dependencies. Все эти банки при публикации в tomcat находят свой путь, соответствующий WEB-INF/lib[

].
0
ответ дан 1 December 2019 в 04:17
поделиться
[

] Если у вас в pom.xml установлен метод упаковки, он должен копировать зависимости времени выполнения в целевой/военный/веб-INF/lib.[

] [

]Или ваш проект собирает что-то большее, например, ухо? Если да, то вы, вероятно, должны разделить ваш pom.xml на мультипроектный формат.[

] [

]Что касается Eclipse, Я не очень хорошо знаком с этим, так что я не могу тебе помочь. Вы (или можете) запустить maven target (например, "install"), когда выполняете запуск или отладку?[

].
1
ответ дан 1 December 2019 в 04:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: