Перейти к основному содержимому

Создайте файл WAR в Maven

· 4 мин. чтения

1. Обзор

Ресурсы веб-приложений или архивы веб-приложений обычно называют файлами WAR. Файл WAR используется для развертывания веб-приложения Java EE на сервере приложений. Внутри файла WAR все веб-компоненты упакованы в один блок. К ним относятся файлы JAR, страницы JavaServer, сервлеты Java, файлы классов Java, файлы XML, файлы HTML и другие файлы ресурсов, которые нам нужны для веб-приложений.

Maven — это популярный инструмент управления сборкой, который широко используется в проектах Java EE для выполнения таких задач сборки, как компиляция, упаковка и управление артефактами. Мы можем использовать подключаемый модуль Maven WAR для сборки проекта в виде файла WAR .

В этом руководстве мы рассмотрим использование подключаемого модуля Maven WAR с приложением Java EE. Для этого мы собираемся создать простое веб-приложение Maven Spring Boot и сгенерировать из него WAR-файл.

2. Настройка веб-приложения Spring Boot

Давайте создадим простое веб-приложение Maven, Spring Boot и Thymeleaf , чтобы продемонстрировать процесс создания файла WAR.

Во-первых, мы собираемся добавить зависимости к файлу pom.xml , необходимому для создания нашего веб-приложения Spring Boot:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

Далее давайте создадим наш класс MainController . В этом классе мы собираемся создать единственный метод контроллера GET для просмотра нашего HTML-файла:

@Controller
public class MainController {

@GetMapping("/")
public String viewIndexPage(Model model) {
model.addAttribute("header", "Maven Generate War");
return "index";
}
}

Наконец, пришло время создать наш файл index.html . CSS-файлы Bootstrap также включены в проект, а некоторые CSS-классы используются в нашем файле index.html :

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Index</title>
<!-- Bootstrap core CSS -->
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">
ForEach Tutorial
</a>
</div>
</nav>
<div class="container">
<h1>[[${header}]]</h1>
</div>
</body>
</html>

3. Плагин Maven WAR

Плагин Maven WAR отвечает за сбор и компиляцию всех зависимостей, классов и ресурсов веб-приложения в архив веб-приложения.

В плагине Maven WAR есть несколько определенных целей:

  • war : это цель по умолчанию, которая вызывается на этапе упаковки проекта. Он создает файл WAR, если тип упаковкиwar .
  • взорванный : эта цель обычно используется на этапе разработки проекта для ускорения тестирования. Он создает развернутое веб-приложение в указанном каталоге.
  • inplace : это вариант взорванной цели. Он создает развернутое веб-приложение в папке веб-приложения.

Давайте добавим плагин Maven WAR в наш файл pom.xml :

<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
</plugin>

Теперь, когда мы выполним команду mvn install , файл WAR будет сгенерирован внутри целевой папки.

Используя команду mvn:war:exploded , мы можем сгенерировать взорванный WAR как каталог внутри целевого каталога. Это обычный каталог, и все файлы внутри файла WAR содержатся внутри развернутого каталога WAR.

4. Включить или исключить содержимое файла WAR

Используя плагин Maven WAR, мы можем фильтровать содержимое файла WAR. Давайте настроим подключаемый модуль Maven WAR, чтобы включить папку Additional_resources в файл WAR:

<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<webResources>
<resource>
<directory>additional_resources</directory>
</resource>
</webResources>
</configuration>
</plugin>

Как только мы выполним команду mvn install , все содержимое папки Additional_resources будет доступно внутри WAR-файла. Это полезно, когда нам нужно добавить некоторые дополнительные ресурсы, например, отчеты, в файл WAR.

5. Отредактируйте файл манифеста

Плагин Maven WAR позволяет настраивать файл манифеста . Например, мы можем добавить путь к классам в файл манифеста . Это очень полезно, когда файл WAR имеет более сложную структуру и когда нам нужно разделить зависимости проекта между несколькими модулями.

Давайте настроим подключаемый модуль Maven WAR, чтобы добавить путь к классам в файл манифеста :

<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>

6. Заключение

В этом кратком руководстве мы обсудили, как создать файл WAR с помощью инструмента сборки Maven. Мы создали веб-приложение Maven Spring Boot для демонстрации работы. Для создания файла WAR мы использовали специальный плагин Maven WAR.

Полный пример исходного кода доступен на GitHub .