快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
为Java新手创建一个最简单的maven-assembly-plugin示例项目:1)单模块HelloWorld程序 2)打包为包含依赖的fat jar 3)添加简单的assembly描述文件 4)生成可直接运行的bash脚本。请用最简配置演示完整流程,并标注每个步骤的注意事项。 - 点击'项目生成'按钮,等待项目生成完整后预览效果
作为Java新手,刚学会写代码后最头疼的就是如何把项目打包分发。最近我用maven-assembly-plugin解决了这个问题,这里把从零开始的经验分享给大家,特别适合第一次接触Maven打包的同学。
1. 为什么需要maven-assembly-plugin
刚开始用Maven打包时,发现默认生成的JAR包有个大问题——依赖的第三方库不会自动包含进去。比如用到了Jackson库,别人运行时会报ClassNotFound错误。这时候就需要maven-assembly-plugin来制作包含所有依赖的"fat jar"(也叫uber jar)。
2. 创建基础Maven项目
- 用IDE或命令行创建标准的Maven项目
- 在pom.xml中添加maven-assembly-plugin依赖(注意要放在build/plugins里)
- 建议同时指定maven-compiler-plugin的Java版本,避免兼容问题
这里有个新手容易踩的坑:插件版本号最好明确指定,不要用变量引用,否则可能遇到版本冲突。
3. 编写Assembly描述文件
在src/main/assembly目录下新建package.xml(没有就创建这个目录),这个文件决定了打包方式。最常用的配置是:
- 设置打包格式为jar
- 包含所有依赖库
- 指定mainClass让JAR可执行
- 添加Linux/Windows启动脚本
特别提醒:mainClass一定要写对,就是包含main方法的完整类路径。我刚开始漏了包名,运行时一直报找不到主类。
4. 配置pom.xml关键参数
在plugin配置块中需要指定:
- 上面创建的assembly描述文件路径
- 最终生成的JAR包名称
- 执行package时自动运行assembly
建议把finalName设成和artifactId不同,这样能清楚区分原始JAR和fat jar。
5. 打包与测试
- 运行mvn clean package
- 在target目录会生成两个JAR:原始包和带dependencies的fat jar
- 用java -jar测试运行,确认不报ClassNotFound错误
如果打包失败,建议先执行mvn clean。有时候旧的编译结果会影响打包过程。
6. 进阶技巧
- 可以用assembly的fileSets精细控制哪些资源文件要打包进去
- 通过descriptorRefs使用预定义的打包模板
- 结合maven-shade-plugin处理依赖冲突
刚开始建议保持配置尽量简单,等熟悉后再尝试复杂场景。
实际体验建议
我在InsCode(快马)平台上测试这个流程时,发现它的在线编辑器特别适合新手——不用配置本地环境就能直接验证打包效果,还能一键分享给同事检查配置。
最重要的是部署功能真的省心,生成的JAR包可以直接运行测试,不用折腾服务器环境。对刚学Maven的同学来说,这种即时反馈能快速建立信心。刚开始我花了三天都没配好的东西,在平台上半小时就看到了正确结果。
快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
为Java新手创建一个最简单的maven-assembly-plugin示例项目:1)单模块HelloWorld程序 2)打包为包含依赖的fat jar 3)添加简单的assembly描述文件 4)生成可直接运行的bash脚本。请用最简配置演示完整流程,并标注每个步骤的注意事项。 - 点击'项目生成'按钮,等待项目生成完整后预览效果
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考