news 2026/4/18 13:47:28

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/4/8 12:17:26

Flowise实战:构建智能客服系统的完整指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 在Flowise平台上开发一个智能客服系统,能够根据用户输入的问题自动生成回答。系统应支持多轮对话,能够理解常见问题(如订单查询、退货政策等&…

作者头像 李华
网站建设 2026/4/18 8:35:36

5个高效修复MaterialDesign界面问题的专业方案

5个高效修复MaterialDesign界面问题的专业方案 【免费下载链接】MaterialDesignInXamlToolkit Googles Material Design in XAML & WPF, for C# & VB.Net. 项目地址: https://gitcode.com/gh_mirrors/ma/MaterialDesignInXamlToolkit 作为一名WPF开发者&#x…

作者头像 李华
网站建设 2026/4/18 10:53:17

1小时打造特殊符号生成器:无代码开发实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个无代码特殊符号生成器原型,功能包括:1.可视化配置界面 2.符号分类选择 3.实时生成预览 4.一键导出代码 5.分享功能。使用InsCode的AI生成功能快速实…

作者头像 李华
网站建设 2026/4/18 8:06:29

企业级项目中如何实施Vue组件命名规范

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个企业级Vue项目组件规范检查CI/CD插件,功能包括:1) 在git pre-commit钩子中检查新增/修改的组件是否符合多单词命名规范;2) 与团队已有的…

作者头像 李华
网站建设 2026/4/18 8:31:31

Docker Desktop vs 传统开发:效率对比实测报告

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个交互式对比演示应用,展示同一个项目在传统开发环境和Docker Desktop环境下的开发流程差异。包括:环境搭建时间对比、团队协作难易度、跨平台兼容性、…

作者头像 李华
网站建设 2026/4/18 8:09:03

3分钟极速安装Maven:对比传统方法效率提升500%

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个极简Maven安装效率工具,要求:1.使用curl/wget一键下载最新稳定版Maven 2.自动解压到opt目录 3.智能修改.bashrc/.zshrc环境变量 4.生成安装验证命令…

作者头像 李华