Создайте файл 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

Другие вопросы по тегам