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

Java 使用Maven程序集插件创建WAR文件,java,maven,maven-assembly-plugin,Java,Maven,Maven Assembly Plugin,是否可以使用maven汇编插件创建war文件,或者该插件仅用于创建jar文件 要创建war文件,需要在Maven assembly插件中配置什么 我不想使用maven war插件,因为我的war文件需要更多的可能性(例如,我的特定war文件需要两个不同的输出目录,我指的是目标路径和maven项目中的另一个路径)。如果我用这个插件创建一个jar文件,那么使用maven汇编插件是没有问题的 在maven assembly插件中,您定义.war文件的名称(我称之为ROOT,因为它是主应用程序)和插件应

是否可以使用maven汇编插件创建war文件,或者该插件仅用于创建jar文件

要创建war文件,需要在Maven assembly插件中配置什么


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

在maven assembly插件中,您定义.war文件的名称(我称之为ROOT,因为它是主应用程序)和插件应该执行的阶段。appendAssemblyId属性定义是否应将“-war”附加到文件名(例如“ROOT war.war”)


org.apache.maven.plugins
maven汇编插件
3.1.1
war-assembly.xml
根
假的
包裹
单一的
生成的.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>

战争
战争
假的
WEB-INF/lib
*:战争
${project.build.directory}/classes
WEB-INF/课程
/**/*
...

maven assembly插件为您提供了构建输出工件的极大灵活性。但您还需要分别复制依赖项、类文件和资源,这可能非常复杂。maven war插件可以为您完成所有这一切。

使用两个单独的执行块,而不是maven assembly。。。
<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>