2012-03-02 3 views
20

Я пытаюсь создать базовый мирный проект, используя Eclipse Indigo и сервер Tomcat. Я создал динамический проект с простым сервлетом. Протестировал сервлет, и это сработало нормально. Затем я включил поддержку Maven и добавил logback к моему pom. Я поместил оператор регистрации в метод сервлетов doGet. При запуске сервлета он жалуется, что не может найти никаких привязок, потому что банки журнала не копируются в экземпляр экземпляра Eclipse tomcat. Я ожидал найти банки, опубликованные где-то здесь:Eclipse WTP не публикует зависимости Maven

${workspace}\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\

Как получить Eclipse, чтобы работать с WTP/Maven должным образом? Я также попытался установить разъем m2e-wtp без разницы.

ответ

48

Проверка Сборка Развертывание (контекстное меню по проекту), должно быть отображение Maven зависимостей -> WEB-INF/Lib.

+0

Спасибо за совет, это был правильно настроен, но не работает. В конце концов я узнал, что сработал новый проект с нуля. В этом случае я создал проект, а затем добавил Maven WTP-коннектор, и он не правильно настроил проект. – dcompiled

+2

У меня была немного другая проблема, но это исправило это. Я использовал Maven для создания моего проекта, в котором были SNAPSHOTS. У меня изначально было разрешение рабочей области и отключено. Eclipse был настроен так, чтобы по-прежнему использовать локальный проект, а не моментальные снимки из нашего репозитория nexus. Я продолжал получать CNFE и нашел это, что указывало на проблему, которая по-прежнему пытается ее решить, а не публиковать. – bh5k

+0

это помогло мне много, а в другом случае :) (похоже) – Alex

13

Исходя из фона ASP.NET, я нахожу это шокирующим, сколько работы требуется, чтобы получить Webapp, работающий с Eclipse WTP и Maven, особенно если вы учитесь самостоятельно. Надеемся, что это краткое руководство поможет кому-то быстрее встать на скорость.

Существует два способа получить приветственный мир, работающий в Eclipse WTP с Maven. Вы можете создать динамический веб-проект, а затем добавить природу Maven, или вы можете сделать обратное.

Предпосылки для Eclipse, с обновлением сайтов

конфигурации запуска

  • Установить копию Tomcat 7 из http://tomcat.apache.org/download-70.cgi

  • Window -> Preferences -> Сервер -> Runtime Environment

  • Добавить Apach е Tomcat 7.0 и выберите локальный каталог установки

Вариант 1: Создание затем Dynamic Web Project добавить Maven Природа

  • Создать новый проект Maven, выберите архетип org.apache.maven.archetypes : maven-archetype-webapp

  • Изменение перспективы Java EE.

  • Создать новую исходную папку, src \ main \ java. Обратите внимание, что Eclipse недостаточно умен, чтобы сделать это для вас, а также порядок расположения папок неверен. src \ main \ java папка указана после src \ main \ resources. Это может быть исправлено вручную позже в свойствах проекта.

  • Создайте новый сервлет. Обратите внимание, как Eclipse по умолчанию использует этот файл в неправильной папке src \ main \ resources, потому что порядок неправильный. Вместо этого вручную выберите src \ main \ java. Измените сопоставление URL-адресов на второй странице мастера на/*, чтобы упростить тестирование.

  • Теперь наш сервлет готов, но зависимости от сервлета api не связаны. A) мы можем добавить сервлет api в качестве зависимости от нашего проекта или B) мы можем привязать к конфигурации сервера Eclipse для Apache 7.0.

  • Для варианта А, добавьте эту зависимость к ПОМ:

.

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-api</artifactId> 
    <version>7.0.${set this}</version> 
    <scope>provided</scope> 
</dependency> 
  • Для варианта B: свойства

    • Project -> Java Build Path -> Библиотеки -> Add Library -> Среда выполнения сервера -> Apache Tomcat 7.0
    • правой кнопкой мыши и запустить на сервере:
  • Пустой лист должен появиться во внутреннем браузере, таком как http://localhost:8080/ $ {a rtifact}

Тест зависимости публикации:

  • Добавить Joda времени на ПОМ.

  • Добавьте эту строку в сервлет, созданный ранее для метода doGet и импортировать необходимые зависимости:

.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    response.getWriter().println("The time is now: " + new DateTime().toString()); 
} 

Обновить тестовую страницу и теперь вывод должен быть:

Время сейчас: 2012-03-03T14: 14: 29.890-05: 00

Теперь, если вы хотите играть с Servlet 3.0 и аннотации, по умолчанию это не включено, по какой причине я не знаю. Сначала нужно использовать Maven для использования Java 1.6, добавив это вашему pom, иначе каждый раз, когда вы обновляете свой pom, конфигурация вернется к Java 1.5.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
    </plugin> 

Открытый проект -> Границы проекта. Измените версию в разделе «Динамический веб-модуль» на 3.0, измените java-версию 1.6

Создайте новый сервлет с именем класса AnnotatedServlet в src \ main \ java и обратите внимание, как автоматически создается аннотация @WebServlet.

Вариант 2: Создание затем Dynamic Web Project добавить Maven Природа

  • Выберите Tomcat времени выполнения и динамического модуля версии 3.0
  • Создать папку источника SRC \ главная \ Java
  • целевой выходной набор по умолчанию \ классы
  • Установить контекстный каталог src \ main \ webapp
  • Проверить создание web.xml
  • Создание сервлета с отображением/* для быстрого тестирования
  • Добавить выходной заявление метода doGet

response.getWriter().println("Another test");

  • Дважды щелкните на «дескриптор развертывания» и добавьте этот атрибут в корень элемент веб-приложения metadata-complete="false"

  • Щелкните правой кнопкой мыши проект и выберите «Запустить как» -> «Запустить на сервере»

  • правой кнопкой мыши проект -> Настройка -> Преобразовать в Maven проекта
  • Выбор упаковки, как война
  • Edit пом и установить компилятор использовать Java 1.6 и добавить Joda-зависимость от времени:

.

<dependencies> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.1</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+1

В последнее время ситуация выглядит несколько лучше с более поздними версиями eclipse (мой процесс: создать новый проект maven, выбрать веб-сайт app archetype, добавьте зависимости maven к сборке развертывания, как описано в принятом ответе здесь, что, как правило, работает), но тот факт, что этот вопрос по-прежнему имеет значение, показывает, что он все еще не * идеально *. Но ни система веб-приложений, как она существует, ни maven, на самом деле не были разработаны с учетом использования IDE, что, вероятно, связано с тем, что у нас есть такие проблемы. В то время как все в .NET было разработано для интеграции с VS красиво. –

0

У меня возникла аналогичная проблема, и хотя я правильно настроил сборку развертывания, она все еще не работает. Затем я обнаружил, что под окном -> Настройки -> Мой Eclipse -> Проект Java Enterprise -> Веб-проект на вкладке «Развертывание» управление проектами Dependent было отключено. Я изменил его, чтобы развернуть банки зависимых проектов в папку lib, а затем все работало как шарм. Я мог бы отключить опцию «Развертывание развертывания».

1

правой кнопкой мыши на веб-проекта в Project Explorer, а затем выберите Maven -> Project Update

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