Я обновляю существующий проект от 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
] Выполнение цели []gwt:eclipse[
] скопирует зависимости maven в [] war/WEB-INF/lib[
]. См. раздел []Eclipse Configuration[] документации []Eclipse IDE Integration[] плагина []Maven GWT[] для получения более подробной информации. Также посмотрите на []этот ответ[] о []Maven GWT 2.0 и Eclipse[].[
IDE (идея, затмение, нетто-бобы) должна делать эту упаковку автоматически. может быть, вы:
] Вы должны установить []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[][
]] Это не должно быть проблемой. Если вы используете 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[
].] Если у вас в pom.xml установлен метод упаковки, он должен копировать зависимости времени выполнения в целевой/военный/веб-INF/lib.[
] []Или ваш проект собирает что-то большее, например, ухо? Если да, то вы, вероятно, должны разделить ваш pom.xml на мультипроектный формат.[
] []Что касается Eclipse, Я не очень хорошо знаком с этим, так что я не могу тебе помочь. Вы (или можете) запустить maven target (например, "install"), когда выполняете запуск или отладку?[
].