大家好,我是IT修真院深圳分院第4期学员,一枚正直善良的JAVA程序员。
今天给大家分享一下,修真院官网JAVA任务2中,深度思考部分的知识点——Maven 打包插件的设置及使用
一、背景介绍
打包是我们经常要使用的一个功能,但是maven或java本身的打包功能有的时候并不能满足我们的要求,例如我们想要得到一个使用“java -jar xxx.jar”命令就可以直接运行的包,这就是上述的打包功能所做不到的。这也就是我们今天小课堂的目的,打出一个可以满足自己需要的包
二、知识剖析
打包的用途
从任务1~任务9,目前为止打包的用途有三个
1.专供依赖引用的jar包,也就是我们在maven的pom.xml引入的依赖包
2.Web应用程序的war包,通常我们部署网站使用的都是war包
3.可以直接执行的jar包,在任务8、任务9Web端和Service端分离,Service端的本体就是一个可执行jar包
常用的打包工具
非maven的有两个,在maven中配置的有三个
1.package,maven自带的命令打包,平时的打包基本够用,但不能打可直接运行的jar包
2.IDEA自带的打包工具,不过打的包很容易出现冲突
3.jar-dependency插件,繁琐,性能差,不建议使用
4.assembly插件,可以打多种格式的包,具有基本的解决所打jar包内依赖包冲突的问题,但一旦出现冲突则无法解决
5.shade插件,终极杀器,jar包出现依赖包冲突可以通过调整配置解决
三、常见问题
这五种打包工具,有什么区别?
四、解决方案
打包工具虽多,但用途、性能是有所区别的
按性能分类
shade>assembly>IDEA自带>package>jar插件
按用途分类
1.打不依赖其他包的引用jar包:全部
2.打依赖其他包的引用jar包:shade、assembly、IDEA自带
3.不依赖其他包的可运行jar包:shade、assembly、IDEA自带、
4.依赖其他包的可运行jar包:shade、assembly、IDEA自带
5.需要将包打成各种格式如zip、tar.gz等格式:assembly
6.当出现jar包冲突时:统一采用shade
总结
懒得不想装插件使用package或IDEA自带,但是经常会出现冲突;需要打不同格式的包使用assembly;上述插件出现冲突使用终极大杀器shade
五、编码实战
六、扩展思考
七、参考文献
1.csdn博客:http://blog.csdn.net/xiao__gui/article/details/47341385
2.shade官网:http://maven.apache.org/plugins/maven-shade-plugin/
3.assembly官网:http://maven.apache.org/plugins/maven-assembly-plugin/index.html#
八、更多讨论
undefined_腾讯视频
视频链接:视频
PPT链接:PPT
感谢大家观看
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
我的邀请码:13299900,或者你可以直接点击此链接:http://www.jnshu.com/login/1/13299900