news 2026/6/8 9:18:34

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/7 11:44:20

5分钟搭建spring-cloud-starter-bootstrap原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 快速创建一个spring-cloud-starter-bootstrap概念验证原型,展示核心功能和用户体验。点击项目生成按钮,等待项目生成完整后预览效果 最近在尝试搭建一个基于…

作者头像 李华
网站建设 2026/6/8 8:36:38

AI助力MyBatis Collection处理:告别复杂SQL编写

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请生成一个使用MyBatis处理一对多关系的完整示例项目。要求:1. 包含Department和Employee两个实体,一个部门对应多个员工 2. 实现通过部门ID查询部门信息及所…

作者头像 李华
网站建设 2026/6/4 2:38:35

解锁ESP32S2原生USB:5大实用场景深度解析

解锁ESP32S2原生USB:5大实用场景深度解析 【免费下载链接】EspTinyUSB ESP32S2 native USB library. Implemented few common classes, like MIDI, CDC, HID or DFU (update). 项目地址: https://gitcode.com/gh_mirrors/es/EspTinyUSB ESP32S2微控制器搭载了…

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

TI CC2642R BLE 5.2低功耗蓝牙模块:以核心芯片驱动智能连接革新

在物联网与智能设备高速发展的时代,低功耗蓝牙(BLE)技术凭借其低功耗、高可靠性和广泛兼容性,成为连接设备与云端的核心纽带。作为TI(德州仪器)与飞易通科技联合推出的明星产品,FSC-BT618 TI CC…

作者头像 李华
网站建设 2026/6/7 1:53:21

SQL小白必看:GROUP BY HAVING图文入门指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个交互式SQL学习应用,通过可视化方式解释GROUP BY HAVING:1.数据分组动画演示 2.条件过滤交互实验 3.实时反馈的练习系统 4.错误纠正提示。要求使用卡…

作者头像 李华