Динамический веб-проект Java с Maven и Eclipse

У меня есть несколько вопросов о создании веб-приложения Java с Maven и Eclipse:

How do I create a Java web project with servlets, jsp, and other classes with Maven? It creates a simple directory structure, src->main->java. Where and how do I put the web-inf folder? Do I need to add the jdbc-drivers manually to the folder inside the web-inf/lib, or is it ok just to point out the dependency? Is there a way to test the servlets with junit?
 ROMANIA_engineer15 дек. 2015 г., 11:48
Ниже описаны 2 подхода, которые поддерживают web + Maven. Разница относительно структуры:(1) Maven проект, имеющийmaven-archetype-webapp (Файл & gt; Новый & gt; Maven Project) - используетwebapp подsrc/main/ (Maven стиль)(2) Динамический веб-проект, преобразованный в проект Maven (Файл & gt; Новый & gt; Динамический веб-проект) - используетWebContent (Стиль Затмения)

Ответы на вопрос(4)

Решение Вопроса

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

Creating a Web application project with Maven

How do I create a java web project with servlets jsp and other classes with maven? It creates a simple directory structure, 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 из этой структуры с целью war: war.

Обратите внимание, что этот архетип предназначен для очень простого (устаревшего) веб-приложения, но он является наилучшей доступной отправной точкой. Возможно, вы захотите удалить файл web.xml и создать новый, который поддерживает Servlet 3.0.

WEB-INF location

Where and how do I put the web-inf folder?

По умолчанию Maven ожидает, что ресурсы, которые должны находиться в корне файла WAR, такие как изображения, html-страницы и каталог WEB-INF, должны находиться в/src/main/webapp/. So the WEB-INF folder should be located at /src/main/webapp/WEB-INF/. Если вы используете maven-archetype-webapp, этот каталог создается автоматически вместе с образцом файла web.xml.

Eclipse integration

Вы упомянули Eclipse в заголовке вопроса, и действительно возможно разрабатывать веб-приложения Mavenized в Eclipse с помощью плагина m2eclipse. Eclipse имеет хорошую поддержку веб-приложений через WTP (Платформа веб-инструментов).

Хотя многие гиды в Интернете (ошибочно) рекомендуют это,you should not use the mvn eclipse:eclipse command to create the Eclipse project, Этот плагин может генерировать проекты WTP только для очень старых версий Eclipse (WTP 2.0 - максимум). Вместо этого используйте плагин m2eclipse, как описаноВот.

Dependencies

Do I need to add the jdbc-drivers manually to the folder inside the web-inf/lib, or is it ok just to point out the dependency?

Нет необходимости делать это вручную, поскольку одним из ключевых преимуществ Maven является управление зависимостями. Если вы добавите зависимость в pom.xml с областью действияcompile или жеruntimeфайл JAR будет автоматически включен вWEB-INF/lib/ каталог файла WAR. Например, чтобы добавить зависимость драйвера JDBC Postgresql, добавьте это в ваш pom.xml:

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.1-901.jdbc4</version>
</dependency>

Поскольку область не указана, Maven будет предполагать, что она находится в области по умолчаниюcompile, В результате Maven будет включатьWEB-INF/lib/postgresql-9.1-901.jdbc4.jar в файле WAR.

Testing

Is there a way to test the servlets with junit?

Этот вопрос был задан (и ответил) на Stackoverflow:

Unit testing a Java servlet Unit testing servlets References Hello World with JSF 2.0, Glassfish 3, Maven, SVN and Eclipse.
 15 окт. 2014 г., 06:17
Хорошо сделано. У меня проблемы с моим проектом на основе описанных вами шагов, и я хотел бы прочитать вашу ссылочную статью: "Как Maven создает файл WAR" & quot; но ссылка кажется мертвой

ой кнопкой мыши имя проекта и выберите «Настроить & gt; Преобразовать в Maven Project. Для завершения преобразования может потребоваться до минуты, так что наберитесь терпения. Смотрите следующую статью:

http://aykutakin.wordpress.com/2013/12/04/create-eclipse-dynamic-web-project-with-maven-2/

Если это не работает, попробуйте это:

http://crunchify.com/how-to-create-dynamic-web-project-using-maven-in-eclipse/

а не используемого по умолчанию.

Я использую SpringSource Tool Suite, который для этого упражнения такой же, как Eclipse с m2e. Создайте новый проект Maven и убедитесь, что вы выбрали следующий архетип:

enter image description here

Maven способ командной строки сделать это:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

Этот архетип поместит папку WEB-INF в правильное место (в src / main / webapp).

Вы можете найти больше информации наhttp://maven.apache.org/guides/mini/guide-webapp.html

 21 мар. 2014 г., 17:22
Это устарело. Баночка для сервлетов не будет добавлена.
Step 1: create your web app folder. Step 2: Move to that folder in command prompt. Step 3: use following command:

генерировать -DgroupId = com.helloworld -DartifactId = HelloWorldDemo -DarchetypeArtifactId = maven-archetype-webapp -DinteractiveMode = false

DarchetypeArtifactId=maven-archetype-webapp создаст веб-проект Maven.

Step 4: Now on command prompt go inside the project folder and use this command: mvn eclipse:eclipse -Dwtpversion=2.0 to make your project a dynamic web project for eclipse, now import this newly created project as an "Ëxisting project"

использованиеm2eclipse plugin затмения, чтобы включить MAVEN в eclipe.

Web.xml Будет в\src\main\webapp\WEB-INF

Ваш ответ на вопрос