news 2026/6/9 12:02:47

Maven打包不求人:maven-assembly-plugin入门指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Maven打包不求人:maven-assembly-plugin入门指南

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    为Java新手创建一个最简单的maven-assembly-plugin示例项目:1)单模块HelloWorld程序 2)打包为包含依赖的fat jar 3)添加简单的assembly描述文件 4)生成可直接运行的bash脚本。请用最简配置演示完整流程,并标注每个步骤的注意事项。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

作为Java新手,刚学会写代码后最头疼的就是如何把项目打包分发。最近我用maven-assembly-plugin解决了这个问题,这里把从零开始的经验分享给大家,特别适合第一次接触Maven打包的同学。

1. 为什么需要maven-assembly-plugin

刚开始用Maven打包时,发现默认生成的JAR包有个大问题——依赖的第三方库不会自动包含进去。比如用到了Jackson库,别人运行时会报ClassNotFound错误。这时候就需要maven-assembly-plugin来制作包含所有依赖的"fat jar"(也叫uber jar)。

2. 创建基础Maven项目

  1. 用IDE或命令行创建标准的Maven项目
  2. 在pom.xml中添加maven-assembly-plugin依赖(注意要放在build/plugins里)
  3. 建议同时指定maven-compiler-plugin的Java版本,避免兼容问题

这里有个新手容易踩的坑:插件版本号最好明确指定,不要用变量引用,否则可能遇到版本冲突。

3. 编写Assembly描述文件

在src/main/assembly目录下新建package.xml(没有就创建这个目录),这个文件决定了打包方式。最常用的配置是:

  1. 设置打包格式为jar
  2. 包含所有依赖库
  3. 指定mainClass让JAR可执行
  4. 添加Linux/Windows启动脚本

特别提醒:mainClass一定要写对,就是包含main方法的完整类路径。我刚开始漏了包名,运行时一直报找不到主类。

4. 配置pom.xml关键参数

在plugin配置块中需要指定:

  1. 上面创建的assembly描述文件路径
  2. 最终生成的JAR包名称
  3. 执行package时自动运行assembly

建议把finalName设成和artifactId不同,这样能清楚区分原始JAR和fat jar。

5. 打包与测试

  1. 运行mvn clean package
  2. 在target目录会生成两个JAR:原始包和带dependencies的fat jar
  3. 用java -jar测试运行,确认不报ClassNotFound错误

如果打包失败,建议先执行mvn clean。有时候旧的编译结果会影响打包过程。

6. 进阶技巧

  1. 可以用assembly的fileSets精细控制哪些资源文件要打包进去
  2. 通过descriptorRefs使用预定义的打包模板
  3. 结合maven-shade-plugin处理依赖冲突

刚开始建议保持配置尽量简单,等熟悉后再尝试复杂场景。

实际体验建议

我在InsCode(快马)平台上测试这个流程时,发现它的在线编辑器特别适合新手——不用配置本地环境就能直接验证打包效果,还能一键分享给同事检查配置。

最重要的是部署功能真的省心,生成的JAR包可以直接运行测试,不用折腾服务器环境。对刚学Maven的同学来说,这种即时反馈能快速建立信心。刚开始我花了三天都没配好的东西,在平台上半小时就看到了正确结果。

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    为Java新手创建一个最简单的maven-assembly-plugin示例项目:1)单模块HelloWorld程序 2)打包为包含依赖的fat jar 3)添加简单的assembly描述文件 4)生成可直接运行的bash脚本。请用最简配置演示完整流程,并标注每个步骤的注意事项。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 14:37:31

AI一键转换:SVG到Base64的智能编码方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个在线工具,用户上传SVG文件后,自动将其转换为Base64编码字符串。要求:1.支持拖拽上传和文件选择两种方式 2.实时显示转换进度 3.生成可直…

作者头像 李华
网站建设 2026/6/8 15:19:42

传统vsAI:iUnlockTool如何将解锁效率提升300%

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个解锁效率对比工具,左侧展示传统手动解锁流程(需10步操作),右侧展示iUnlockTool的AI简化流程(仅3步)。要求:1) 交互式步骤演示 2) 实时计…

作者头像 李华
网站建设 2026/6/8 15:02:32

电商网站缓存优化实战:从理论到实现

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商网站商品详情页缓存系统,要求:1. 基于Next.js框架 2. 实现SSG静态生成 3. 对价格等动态内容使用SWR缓存 4. 添加缓存状态可视化面板 5. 支持按需…

作者头像 李华
网站建设 2026/6/8 15:02:22

如何精准驾驭GRETNA:MATLAB图论网络分析的科学探索之旅

如何精准驾驭GRETNA:MATLAB图论网络分析的科学探索之旅 【免费下载链接】GRETNA A Graph-theoretical Network Analysis Toolkit in MATLAB 项目地址: https://gitcode.com/gh_mirrors/gr/GRETNA 在现代神经科学研究中,我们常常面临这样的困境&am…

作者头像 李华
网站建设 2026/6/8 10:59:16

fre:ac音频转换实战手册:高效处理数字音乐库的专业方案

fre:ac音频转换实战手册:高效处理数字音乐库的专业方案 【免费下载链接】freac The fre:ac audio converter project 项目地址: https://gitcode.com/gh_mirrors/fr/freac 在数字音乐管理的日常工作中,我们常常面临音频格式转换和CD内容数字化的需…

作者头像 李华
网站建设 2026/6/9 17:57:30

1小时搭建:用torch.matmul实现自定义神经网络层

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成一个可扩展的神经网络组件库,包含:1) 基础全连接层实现;2) 简单的自注意力机制;3) 图神经网络的消息传递层;4) 矩阵分…

作者头像 李华