繁体   English   中英

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

[英]Create a WAR file by using Maven assembly plugin

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM