Maven打包实践:实现生成制品自动压缩

一、前言

最近在项目中遇到了这样的问题,每次我的定时框架和定时器发布了新版本,需要让使用的框架的项目升级,这个时候需要把jar包、sql、配置文件等发送到项目主升级。于是就想着项目打包完成自动帮我把这些文件压缩好,我直接给项目组一个压缩包就可以,从而相当了maven具有这样的功能,下面我将介绍下具体过程。

二、实践

2.1 pom文件修改

plugins节点增加下面信息:


<plugin>

	<groupId>org.apache.maven.plugins</groupId>

	<artifactId>maven-assembly-plugin</artifactId>

	<version>3.6.0</version>

	<executions>

		<execution>

			<id>make-zip-tar</id>

			<!-- maven打包生命周期:package阶段自动执行打包压缩 -->

			<phase>package</phase>

			<goals>

				<goal>single</goal>

			</goals>

		</execution>

	</executions>

	<configuration>

		<!-- 配置描述文件路径 -->

		<descriptors>

			<descriptor>src/main/assembly/assembly.xml</descriptor>

		</descriptors>

		<!-- 输出压缩包到target目录 -->

		<outputDirectory>${project.build.directory}/output</outputDirectory>

	</configuration>

</plugin>

2.2 新增assembly.xml


<?xml version="1.0" encoding="UTF-8"?>

<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>bin</id>

    <!-- 多种压缩格式:zip、tar、tar.gz、tar.bz2、tar.snappy、tar.xz、jar、dir、war 按需开启/注释 -->

    <formats>

        <format>zip</format>

        <format>tar.gz</format>

    </formats>

    <!-- 压缩包内部根目录名称:解压后第一层文件夹名 -->

    <baseDirectory>/</baseDirectory>



    <!-- 1. 将项目jar包打入压缩包 -->

    <files>

        <file>

            <source>${project.build.directory}/output/${project.build.finalName}.jar</source>

            <outputDirectory>/</outputDirectory>

        </file>

    </files>



    <!-- 2. 把自定义目录(conf、bin)全部打进压缩包 -->

    <fileSets>

        <!-- 配置文件夹 -->

        <fileSet>

            <directory>${project.basedir}/src/main/resources</directory>

            <outputDirectory>config</outputDirectory>

            <includes>

                <include>application.yml</include>

                <include>application-dev.yml</include>

            </includes>

        </fileSet>

        <!-- 脚本文件夹 -->

        <fileSet>

            <directory>${project.build.directory}/output/lib</directory>

            <outputDirectory>lib</outputDirectory>

            <includes>

                <include>**/*</include>

            </includes>

            <!-- linux脚本保留执行权限 -->

            <fileMode>0755</fileMode>

        </fileSet>

        <fileSet>

            <directory>${project.basedir}</directory>

            <outputDirectory>/</outputDirectory>

            <includes>

                <include>wh.sh</include>

            </includes>

            <!-- linux脚本保留执行权限 -->

            <fileMode>0755</fileMode>

        </fileSet>

    </fileSets>

</assembly>

2.3 打包测试

01_1782289506330

会发现压缩包会按照要求的目录结构整理好。

posted @ 2026-07-09 17:42  wno704  阅读(5)  评论(0)    收藏  举报