1. Maven打包与maven-assembly-plugin概述在Java项目开发中Maven作为主流的构建工具其打包功能是项目交付的关键环节。maven-assembly-plugin是Maven生态中用于定制化打包的核心插件它能够将项目输出、依赖项、文档等资源按照特定规则组合成可分发的归档文件。不同于默认的maven-jar-plugin只生成简单JAR包maven-assembly-plugin支持多模块聚合打包依赖项内嵌处理自定义目录结构启动脚本生成多种打包格式zip/tar/war等典型应用场景包括需要包含第三方依赖的fat jar打包交付包含配置文件和文档的完整发布包生成符合特定目录规范的分发包制作包含启动脚本的可执行包2. 核心配置详解2.1 基础POM配置在pom.xml中添加插件声明build plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-assembly-plugin/artifactId version3.3.0/version configuration descriptorRefs descriptorRefjar-with-dependencies/descriptorRef /descriptorRefs archive manifest mainClasscom.example.MainApp/mainClass /manifest /archive /configuration executions execution phasepackage/phase goals goalsingle/goal /goals /execution /executions /plugin /plugins /build关键配置项说明descriptorRefs引用预定义的打包描述符archive/manifest配置MANIFEST.MF文件executions绑定到package生命周期阶段2.2 自定义描述符文件在src/main/assembly目录下创建custom-assembly.xmlassembly xmlnshttp://maven.apache.org/ASSEMBLY/2.1.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd iddistribution/id formats formatzip/format /formats fileSets fileSet directory${project.build.directory}/directory outputDirectory//outputDirectory includes include*.jar/include /includes /fileSet fileSet directorysrc/main/resources/directory outputDirectory/config/outputDirectory /fileSet /fileSets dependencySets dependencySet outputDirectory/lib/outputDirectory scoperuntime/scope /dependencySet /dependencySets /assembly主要配置元素formats定义输出格式zip/tar/tar.gz等fileSets控制文件复制规则dependencySets管理依赖项位置3. 高级应用技巧3.1 多环境打包策略通过profile实现不同环境的差异化打包profiles profile iddev/id build plugins plugin artifactIdmaven-assembly-plugin/artifactId configuration descriptors descriptorsrc/main/assembly/dev-assembly.xml/descriptor /descriptors /configuration /plugin /plugins /build /profile profile idprod/id build.../build /profile /profiles3.2 启动脚本生成使用fileMode和lineEnding控制脚本格式fileSet directorysrc/main/scripts/directory outputDirectory/bin/outputDirectory includes includestartup.sh/include includeshutdown.sh/include /includes fileMode0755/fileMode lineEndingunix/lineEnding /fileSet3.3 依赖项排除与过滤dependencySet outputDirectory/lib/outputDirectory excludes excludeorg.slf4j:slf4j-log4j12/exclude /excludes unpacktrue/unpack unpackOptions excludes excludeMETA-INF/*.SF/exclude /excludes /unpackOptions /dependencySet4. 常见问题排查4.1 依赖冲突解决当出现NoSuchMethodError等依赖问题时使用mvn dependency:tree分析依赖树在dependencySet中添加useProjectArtifactfalse/useProjectArtifact通过excludes排除冲突依赖4.2 资源过滤失效确保资源目录已正确配置过滤resources resource directorysrc/main/resources/directory filteringtrue/filtering /resource /resources4.3 文件权限问题Linux环境下需注意通过fileMode设置文件权限如0755使用directoryMode设置目录权限对于Windows交叉编译添加outputDirectoryMapping处理路径分隔符5. 性能优化建议并行构建配置configuration paralleltrue/parallel threadCount4/threadCount /configuration增量构建技巧为不常变动的模块设置recompressZippedFilesfalse/recompressZippedFiles对大文件使用useStrictFilteringtrue/useStrictFiltering内存调优 在MAVEN_OPTS中添加-XX:MaxPermSize512m -Xmx2048m6. 最佳实践总结目录结构规范/myapp /bin - 启动脚本 /lib - 依赖JAR /config - 配置文件 /docs - 文档版本管理策略在文件名中包含版本号和打包时间使用assembly id区分不同打包类型为SNAPSHOT版本添加时间戳多模块项目打包在父POM中统一管理assembly配置使用moduleSets控制子模块包含规则通过includeSubModulestrue/includeSubModules包含子模块依赖实际项目中我们通常会结合maven-assembly-plugin与maven-shade-plugin前者负责资源整合后者处理依赖冲突和类重定位。对于Spring Boot项目可以考虑使用spring-boot-maven-plugin的repackage功能替代部分assembly场景。
企业数字化 ERP 产品动态
相关推荐
LLMZip:大模型语义压缩原理与工程落地指南 1. 这不是传统压缩,是大模型对文本本质的重新编码“LLMZip基于LLaMA-7B实现1MB文本压缩率90%”——看到这个标题,我第一反应不是欢呼,而是立刻关掉所有后台进程,腾出显存,把笔记本插上电源,打开终端准备复现… · 2026/11/9 8:00:15
DeepSeek表格导出指南:移动办公高效操作 1. 手机DeepSeek表格导出操作指南在移动办公场景下,DeepSeek作为新兴的AI生产力工具,其表格生成与导出功能正逐渐成为职场人士和学生群体的刚需。根据实测,目前DeepSeek移动端支持三种主流导出方式,每种方式对应不同的使用场景和文… · 2026/11/5 5:28:03
统计学习:从理论基础到工业实践的核心方法 1. 统计学习的崛起:从理论到实践的演进之路统计学习作为机器学习的重要分支,在过去二十年里经历了令人瞩目的发展历程。记得2001年第一次接触《统计学习基础》这本经典教材时,整个领域还处于理论探索阶段,而今天统计学习方法已经成… · 2026/11/5 4:42:15
慈溪免费培训的电工证怎么考?良心建议帮你避坑 慈溪免费培训的电工证怎么考?良心建议帮你避坑 你是不是正在找电工证,但又不知道从哪下手?急需特种作业证才能上岗找工作,别急,这些建议能帮你少走弯路。 电工证是进工地的“通行证” 现在干建筑、电力、安装这些行当,没有电工证根本没法上岗。… · 2026/11/9 16:25:26
平阴哪里能学电工证怎么考全国通用?电工证报名避坑指南 平阴哪里能学电工证怎么考全国通用?电工证报名避坑指南 你是不是也正愁不知道平阴哪里能学电工证?网上一搜全是培训机构,真假难辨,怕被中介坑,怕花冤枉钱,更怕考不过。别急,这篇文章就来帮你理清楚思路,告诉你 平阴哪里能学电工证… · 2026/11/9 16:25:26
高压电工证的费用得花多少?工地太忙根本没时间复习考试 高压电工证的费用得花多少?工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这事儿我懂。每天从早忙到晚,连吃饭都得抢时间,更别提抽出时间来准备高压电工证考试了。尤其是现在很多工地上的老电工,虽然经验丰富,但面对考试系统和官方报名入口这… · 2026/11/9 16:25:26
国网如何考电工证报名内部消息全公开 国网如何考电工证报名内部消息全公开 证书过期了不知道怎么复审延期?你不是一个人,这种情况在郑州金水区的水利工程从业者中非常常见。很多人拿着电工证,干着和电相关的工作,却因为疏忽没及时复审,结果证件失效,影响了项目进展甚至工作机会。今天就来告… · 2026/11/9 16:25:26
新手高空电工作业内部消息:考证难?上岗更难?别让无证打工毁了你 新手高空电工作业内部消息:考证难?上岗更难?别让无证打工毁了你 你是不是正愁找不到工作?是不是刚毕业或者转行,正愁没证不能上岗?别急, 新手高空电工作业 的证书,正在成为很多人的“救命稻草”。但你知道吗? 内部消息… · 2026/11/9 16:25:26
蚌埠哪里考电工证好 这个证值不值得考 蚌埠哪里考电工证好 这个证值不值得考 你是不是正为找不到工作发愁?有没有想过, 急需特种作业证才能上岗找工作 ,这可能是你眼下最现实的出路。特别是电工证,是很多行业都认可的“通行证”。但你是不是也在犹豫, 这个证值不值得考… · 2026/11/9 16:24:18
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/9 2:05:04
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/9 3:11:26
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/9 5:24:17
电工证不需要考复审延期怎么办理 通过率揭秘 电工证不需要考复审延期怎么办理 通过率揭秘 不知道去哪报名怕被中介坑?电工证不需要考复审延期怎么办理?最近不少学员都在问这个问题,尤其是刚拿到证的新手,对复审流程一知半解,生怕被培训机构套路。别担心,今天咱们就来聊聊电工证复审的真相,尤其是… · 2026/11/9 0:00:54
砀山哪里考电工证的多 电工证报考别踩坑 郑州报考避坑指南 砀山哪里考电工证的多 电工证报考别踩坑 郑州报考避坑指南 工地太忙根本没时间复习考试,这几乎是所有一线施工人员的共同心声。尤其是像电工这样的特种作业,操作证不仅关系到能不能上工,还直接关系到工资高低和职业发展。可偏偏,很多人连怎么报名、去哪… · 2026/11/9 0:00:54
南方电网电工作业含金量高吗?应届生怎么考怎么干? 南方电网电工作业含金量高吗?应届生怎么考怎么干? 工地太忙根本没时间复习考试,这不是个别现象,而是很多刚毕业的工程类学生面临的现实。南方电网电工作业的证书,听起来门槛不低,但 含金量… · 2026/11/9 0:00:54
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/9 11:23:35
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/9 11:23:58
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/9 11:25:08