感觉自己对maven的了解还不够深,就进行了一些简单的学习,这篇文章主要讲述关于引入本地的jar包和maven打包的区别

首先,先了解一下关于maven install和maven package的区别 ,大家都知道maven中必不可少的就是pom文件,install的打包就是将pom文件中依赖按照路径添加到本地的仓库中 ,package的打包就是将自己打成一个jar包,package是把jar打到本项目的target下,不会将其中的依赖和jar 包添加到本地一的仓库中。

另外打出来的jar包和maven选择的打包插件也会有所不同,maven有4种常用的打包插件  一种是jar  maven-jar-plugin 一种是maven-assembly-plugin,还有一种是maven-shade-plugin,另外一种是在springboot中使用的spring-boot-maven-plugin,spring-boot-maven-plugin其实是maven-assembly-plugin的包装版,使用起来更加简单方便。

maven-jar-plugin :

可执行jar与依赖分开,依赖在lib目录里,需要jar和lib目录在同级目录,
优点:jar文件很小 
缺点:需要放置lib文件夹在平级目录

maven-assembly-plugin:

把所有依赖打进同一个jar包里。
缺点:jar文件会比较大,同时该插件有个bug会缺失spring的xds文件,导致无法运行jar,同时如果同级目录还有其它可执行jar文件依赖可能会产生冲突
优点:方便快捷,打包完直接就能运行。有一些bug 可以参考

maven-shade-plugin

所有依赖打到同一个jar文件里。
缺点:jar文件过大、如果同级目录有其它可执行jar,依赖可能会产生冲突
优点:不会有任何bug,直接打成可执行jar文件,最省事

怎么添加jar到本地仓库呢(本地仓库中没有),我们一般常常引用的是jar包都是从云仓库拉取的,现在我们要是引用一个自己 的jar包,要是本地仓库中有此包,使用起来也只要在pom文件中引入就好,如果本地仓库中没有,怎么把它加进本地仓库呢我在网上找了很多的方法,一般的解决办法是自己在仓库的路径下创建一个和引入jar包相同的路径,但是这样的话也有坏处,因为会发现仓库里不仅仅只有jar包,中给了解决方案,但是发现里面引入的和我们正常打包生成的仓库不同,导致引入pom文件后,使用jar包中的东西会报错;然后看了maven的文档后,发现要加上-DpomFile=<path-to-pomfile>的这个参数会完美解决