Ответ 1
Ничего себе, много вопросов сразу. Я признаю, что настройка проекта webapp с Maven и Eclipse может быть сложной задачей, поэтому я постараюсь ответить на все эти вопросы.
Создание проекта веб-приложения с помощью Maven
Как создать веб-проект java с сервлетами jsp и другими классами с помощью maven? Он создает простую структуру каталогов, src- > main- > java.
Когда вы создаете веб-проект Java, конечным продуктом должен быть WAR или EAR файл. WAR и EAR - файлы JAR с определенной структурой, которые могут быть развернуты в сервере приложений или контейнере сервлетов.
Как уже упоминалось, самый простой способ настроить проект Maven для веб-приложений - использовать архетипы:
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
Если мы создадим проект с этим архетипом, тогда будет создана простая структура каталогов и pom.xml. Этот проект следует стандартным макетам каталога Maven, который вы указываете, с /src/main/java/
, /src/test/java
и т.д. Maven генерирует WAR файл из этой структуры с целью войны: война.
Обратите внимание, что этот архетип предназначен для очень простого (устаревшего) веб-приложения, но это лучшая доступная начальная точка. Вероятно, вы захотите отказаться от файла web.xml и создать новый, поддерживающий Servlet 3.0.
Местоположение WEB-INF
Где и как я могу поместить папку web-inf?
По умолчанию Maven ожидает, что ресурсы, которые должны войти в корень WAR файла, такие как изображения, html-страницы и каталог WEB-INF, будут находиться в /src/main/webapp/
. Таким образом, папка WEB-INF должна располагаться в /src/main/webapp/WEB-INF/
.. Если вы используете maven-archetype-webapp, этот каталог автоматически создается вместе с образцом файла web.xml.
Интеграция Eclipse
Вы упомянули Eclipse в заголовке вопроса, и действительно возможно разработать Mavenized веб-приложения в Eclipse с плагином m2eclipse. Eclipse имеет хорошую поддержку для веб-приложений через WTP (Web Tools Platform).
Хотя многие руководства в Интернете (ошибочно) рекомендуют это, , вы не должны использовать команду mvn eclipse: eclipse для создания проекта Eclipse. Этот плагин может генерировать проекты WTP только для очень старых версий Eclipse (максимальный WTP 2.0). Вместо этого используйте плагин m2eclipse, как описано здесь.
Зависимости
Нужно ли добавлять jdbc-драйверы вручную в папку внутри web-inf/lib, или это нормально, просто указать зависимость?
Нет необходимости делать это вручную, поскольку одним из ключевых преимуществ Maven является управление зависимостями. Если вы добавите зависимость в pom.xml с областью компиляции или выполнения, файл JAR будет автоматически включен в каталог WEB-INF/lib/
файла WAR. Например, чтобы добавить зависимость драйвера Postgresql JDBC, добавьте это в свой pom.xml:
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
Поскольку область неопределенности не определена, Maven предположит, что она находится в области по умолчанию. В результате Maven будет включать WEB-INF/lib/postgresql-9.1-901.jdbc4.jar
в WAR файл.
Тестирование
Есть ли способ проверить сервлеты с junit?
Этот вопрос задан (и ответил) на Stackoverflow: