maven常用的打包插件有哪些?有什么区别?如何使用 ?

Java小课堂

分享人:张庆东

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

打包是我们经常要使用的一个功能,但是maven或java本身的打包功能有的时候并不能满足我们的要求,例如我们想要得到一个使用“java -jar xxx.jar”命令就可以直接运行的包,这就是上述的打包功能所做不到的。这也就是我们今天小课堂的目的,打出一个可以满足自己需要的包

2.知识剖析

打包的用途

从任务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包出现依赖包冲突可以通过调整配置解决


3.常见问题

这五种打包工具,有什么区别?


4.解决方案

打包工具虽多,但用途、性能是有所区别的


按性能分类


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


5.编码实战

6.扩展思考

7.参考文献

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#

8.更多讨论

今天的分享就到这里啦,欢迎大家提问和探讨!