分享人:张庆东
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
打包是我们经常要使用的一个功能,但是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#
今天的分享就到这里啦,欢迎大家提问和探讨!