差异
1. maven-jar-plugin
默认的打包方式,用来打普通的project JAR包;只能打一个jar,这个jar无法包含lib,可以通过maven-dependency-plugin输出依赖
2. assembly
常用打包方式
优点: 能自定义目录结构,也可以打包依赖项
参考 https://www.jianshu.com/p/fa7c8db9d9eb
3. maven-shade-plugin
缺点:无法自定义打包目录
优点: 可以梳理依赖,自动替换依赖。用于包冲突解决,但是无法解决一个项目中,有多个版本的问题,这种还需通过classloader解决
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<relocations>
<relocation>
<!-- 替换包无需修改代码,会自动扫描引用做到自动替换 -->
<!-- 待被替换的包 -->
<pattern>cn.hutool</pattern>
<!-- 替换成的包 -->
<shadedPattern>cn.dslhutool</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>