使用Maven程序集插件创建WAR文件

问题描述 投票:3回答:2

是否可以使用maven程序集插件创建war文件,或者此插件仅用于创建jar文件?

在Maven程序集插件中配置什么以创建war文件?

我不想使用maven war插件,因为我需要更多的war文件可能性(例如我的特定war文件的两个不同的输出目录,我的意思是目标路径和我的maven项目中的另一个路径)。如果我用这个插件创建一个jar文件,使用maven程序集插件就没问题了。

java maven maven-assembly-plugin
2个回答
0
投票

在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为您完成所有这些。


-3
投票

只需要在下面添加:

<assembly>

 ...

  <format>war</format>

 ...
</assembly>

参考:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

© www.soinside.com 2019 - 2024. All rights reserved.