
一、前言最近在项目中遇到了这样的问题每次我的定时框架和定时器发布了新版本需要让使用的框架的项目升级这个时候需要把jar包、sql、配置文件等发送到项目主升级。于是就想着项目打包完成自动帮我把这些文件压缩好我直接给项目组一个压缩包就可以从而相当了maven具有这样的功能下面我将介绍下具体过程。二、实践2.1 pom文件修改在plugins节点增加下面信息plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-assembly-plugin/artifactIdversion3.6.0/versionexecutionsexecutionidmake-zip-tar/id!-- maven打包生命周期package阶段自动执行打包压缩 --phasepackage/phasegoalsgoalsingle/goal/goals/execution/executionsconfiguration!-- 配置描述文件路径 --descriptorsdescriptorsrc/main/assembly/assembly.xml/descriptor/descriptors!-- 输出压缩包到target目录 --outputDirectory${project.build.directory}/output/outputDirectory/configuration/plugin2.2 新增assembly.xml?xml version1.0 encodingUTF-8?assemblyxmlnshttp://maven.apache.org/ASSEMBLY/2.1.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd!-- 压缩包前缀名称 --idbin/id!-- 多种压缩格式zip、tar、tar.gz、tar.bz2、tar.snappy、tar.xz、jar、dir、war 按需开启/注释 --formatsformatzip/formatformattar.gz/format/formats!-- 压缩包内部根目录名称解压后第一层文件夹名 --baseDirectory//baseDirectory!-- 1. 将项目jar包打入压缩包 --filesfilesource${project.build.directory}/output/${project.build.finalName}.jar/sourceoutputDirectory//outputDirectory/file/files!-- 2. 把自定义目录conf、bin全部打进压缩包 --fileSets!-- 配置文件夹 --fileSetdirectory${project.basedir}/src/main/resources/directoryoutputDirectoryconfig/outputDirectoryincludesincludeapplication.yml/includeincludeapplication-dev.yml/include/includes/fileSet!-- 脚本文件夹 --fileSetdirectory${project.build.directory}/output/lib/directoryoutputDirectorylib/outputDirectoryincludesinclude**/*/include/includes!-- linux脚本保留执行权限 --fileMode0755/fileMode/fileSetfileSetdirectory${project.basedir}/directoryoutputDirectory//outputDirectoryincludesincludewh.sh/include/includes!-- linux脚本保留执行权限 --fileMode0755/fileMode/fileSet/fileSets/assembly2.3 打包测试会发现压缩包会按照要求的目录结构整理好。