Подтвердить что ты не робот

Eclipse WTP не публикует зависимости Maven

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

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

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

4b9b3361

Ответ 1

Проверьте Развертывание сборки (контекстное меню в проекте), должно быть сопоставление Maven Dependencies → WEB-INF/lib.

Ответ 2

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

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

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

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

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

  • Окно → Настройки → Сервер → среда выполнения

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

Вариант 1. Создайте динамический веб-проект, затем добавьте Maven Nature

  • Создайте новый проект Maven, выберите архетип org.apache.maven.archetypes: Maven-архетип-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.

  • Для опции A добавьте эту зависимость в pom:

.

<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-api</artifactId>
  <version>7.0.${set this}</version>
  <scope>provided</scope>
</dependency>
  • Для опции B:

    • Свойства проекта → Путь сборки Java → Библиотеки → Добавить библиотеку → Время выполнения сервера → Apache Tomcat 7.0
    • Щелкните правой кнопкой мыши и запустите на сервере:
  • Внутри браузера должна появиться пустая страница, например http://localhost:8080/ ${artifact}

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

  • Добавьте joda-время к pom.

  • Добавьте эту строку в сервлет, созданный ранее для метода 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. Создайте динамический веб-проект, затем добавьте Maven Nature

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

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

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

  • Щелкните правой кнопкой мыши проект и выберите "Запустить как" → "Выполнить на сервере"

  • Проект правой кнопки мыши → Настроить → Преобразовать в проект Maven
  • Выберите упаковку как войну
  • Измените pom и установите компилятор для использования 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>

Ответ 3

Щелкните правой кнопкой мыши веб-проект в Project Explorer и выберите Maven → Update Project

Ответ 4

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