Создайте файл WAR с помощью подключаемого модуля Maven
Можно ли создать файл war, используя плагин сборки maven, или этот плагин предназначен только для создания jar-файлов?
Что необходимо настроить в модуле сборки Maven для создания файла войны?
Я не хочу использовать военный плагин maven, поскольку мне нужно больше возможностей для моего военного файла (например, две разные выходные директории для моего конкретного боевого файла, я имею в виду целевой путь и другой путь в моем проекте maven). И это не проблема при использовании плагина сборки maven, если я создаю jar-файл с этим плагином.
1 ответ
В maven-assembly-plugin вы определяете имя.war-файла (я назвал его ROOT, потому что это основное приложение) и фазу, когда плагин должен быть запущен. Свойство appendAssemblyId определяет, следует ли добавлять "-war" к имени файла (например, "ROOT-war.war").
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<descriptors>
<descriptor>war-assembly.xml</descriptor>
</descriptors>
<finalName>ROOT</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Структура получившегося.war-файла должна быть настроена в отдельном XML-файле, который называется "web-assembly.xml" (вы можете указать любое имя). В этом файле дескриптора необходимо указать файлы и каталоги, а также соответствующий выходной каталог в файле.war.
<assembly>
<id>war</id>
<formats>
<format>war</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>WEB-INF/lib</outputDirectory>
<excludes>
<exclude>*:war</exclude>
</excludes>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.directory}/classes</directory>
<outputDirectory>WEB-INF/classes</outputDirectory>
<includes>
<include>/**/*</include>
</includes>
</fileSet>
...
</fileSets>
</assembly>
Плагин maven-assembly-plugin дает вам большую гибкость в структурировании выходного артефакта. Но вам также необходимо копировать зависимости, файлы классов и ресурсы по отдельности, что может быть довольно сложным. Maven-war-plugin делает все это для вас.
Просто нужно добавить ниже:
<assembly>
...
<format>war</format>
...
</assembly>
Ссылка: http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html