Maven Assembly Plugin:Springboot打包

一、插件简介

Maven Assembly Plugin是Maven生态中用于构建项目分发包的核心插件,它能够将项目输出、依赖项、文档等资源按照自定义规则打包成多种格式的归档文件(如ZIP、TAR、JAR等)。该插件名称中的"assembly"意为"装配",形象地描述了其将项目各组成部分组装成完整分发包的功能。

典型应用场景

  • 生成包含所有依赖的​​可执行JAR包​​(fat-jar)
  • 创建包含配置文件的​​生产部署包​
  • 构建包含文档、脚本的​​完整发行包​
  • 制作多模块项目的​​聚合安装包​
  • 生成符合特定目录结构的​​平台专用包​

二、基础配置

1. 插件引入

在pom.xml中添加插件声明:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <!-- 基础配置 -->
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2. 核心配置参数

参数名说明示例值
finalName输出文件名称myapp-{version}
appendAssemblyId是否在文件名追加assembly idtrue
descriptors自定义描述文件路径src/assembly/dist.xml
formats打包格式列表<format>zip</format>

三、描述文件详解

1. 描述文件结构

Assembly描述文件通常放在src/assembly目录下,基本结构

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 
          http://maven.apache.org/xsd/assembly-2.1.0.xsd">
    <id>dist</id>
    <formats>
        <format>zip</format>
    </formats>
    <!-- 其他配置 -->
</assembly>

2. 依赖集(dependencySets)配置

管理项目依赖的打包方式:

<dependencySets>
    <!-- 主依赖包 -->
    <dependencySet>
        <outputDirectory>/lib</outputDirectory>
        <scope>runtime</scope>
    </dependencySet>
    <!-- 排除测试依赖 -->
    <dependencySet>
        <outputDirectory>/test-lib</outputDirectory>
        <scope>test</scope>
        <excludes>
            <exclude>junit:junit</exclude>
        </excludes>
    </dependencySet>
</dependencySets>

四、典型配置案例

通过插件配置,可以将所有依赖库​​打包到单个JAR中​​,生成​​Fat JAR​。通过配置该插件,开发者可以轻松地将项目代码及其所有运行时依赖(包括传递依赖)合并到一个可执行的 JAR 文件中,从而简化部署流程并确保应用程序在任何环境中都能独立运行。​

​Maven Assembly Plugin 配置示例(Fat JAR)​

​1. pom.xml 配置​
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef> <!-- 使用内置模板 -->
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>com.example.Main</mainClass> <!-- 指定主类 -->
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase> <!-- 绑定到package阶段 -->
                    <goals>
                        <goal>single</goal> <!-- 执行打包 -->
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
​2. 执行流程​
  1. ​构建项目​
    mvn clean package
  2. ​生成结果​
    • target/ 目录下生成:
      • your-project-1.0.jar(普通JAR)
      • your-project-1.0-jar-with-dependencies.jar(Fat JAR)
  3. ​运行Fat JAR​

    java -jar target/your-project-1.0-jar-with-dependencies.jar

​3. 关键点​
✅ ​​一键构建​​:mvn package 直接生成可运行JAR

五、总结

Maven Assembly Plugin提供了强大的打包能力,通过灵活的配置可以满足各种复杂的打包需求。相比默认的maven-jar-plugin,它支持更丰富的打包格式和更精细的资源控制;相比maven-shade-plugin,它在保持依赖完整性的同时提供了更清晰的目录结构管理。

在实际项目中,建议:

  1. 为不同环境(dev/test/prod)创建不同的assembly描述文件
  2. 使用<filtering>标签实现配置文件的动态替换
  3. 通过<excludes>排除不必要的依赖,减小包体积
  4. 为脚本文件设置正确的fileMode,文件权限

通过合理使用Maven Assembly Plugin,可以大大简化项目的部署和分发流程,提高开发效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值