pom文件中,修改build项:
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 打JAR包,不包含依赖文件;显式剔除配置文件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<!-- ${project.build.directory} 为target 目录 -->
<outputDirectory>${project.build.directory}</outputDirectory>
<archive>
<!-- 生成的jar中,包含pom.xml和pom.properties这两个文件 -->
<addMavenDescriptor>true</addMavenDescriptor>
<!-- 生成MANIFEST.MF的设置 -->
<manifest>
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path 各个依赖加入前缀 -->
<!--这个jar所依赖的jar包添加classPath的时候的前缀,需要 下面maven-dependency-plugin插件补充-->
<!--一定要找对目录,否则jar找不到依赖lib -->
<classpathPrefix>lib/</classpathPrefix>
<!--指定jar启动入口类 -->
<mainClass>com.Application</mainClass>
</manifest>
<manifestEntries>
<!-- 将<scope>system</scope>指定的jar包文件名xxx.jar引入进来 , 多个路径用空格隔开-->
<Class-Path>lib/xxx.jar</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!-- 复制依赖的jar包到指定的文件夹里 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<!--执行配置的唯一标识符-->
<id>xxx</id>
<!--指定插件在构建生命周期的哪个阶段执行-->
<phase>package</phase>
<!--指定插件执行的目标-->
<goals>
<goal>xxx</goal>
</goals>
<!--插件的配置信息-->
<configuration>
<!-- 拷贝项目依赖包到指定目录下 -->
<outputDirectory>${project.build.directory}/lib/</outputDirectory>
<!-- 是否排除间接依赖,间接依赖也要拷贝 -->
<excludeTransitive>false</excludeTransitive>
<!-- 是否带上版本号 -->
<stripVersion>false</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
<!--
spring boot repackage,
依赖 maven-jar-plugin 打包的jar包
重新打包成 spring boot的jar包
-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 包含本地 jar 依赖 -->
<includeSystemScope>true</includeSystemScope>
<!-- 重写包含依赖,包含不存在的依赖,jar里没有pom里的依赖 -->
<includes>
<include>
<groupId>null</groupId>
<artifactId>null</artifactId>
</include>
</includes>
<layout>ZIP</layout>
<!-- 使用外部配置文件,jar包里没有资源文件 -->
<addResources>true</addResources>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<!-- <configuration>
<!–
配置jar包特殊标识 配置后,保留原文件,
生成新文件 *-run.jar 配置jar包特殊标识 不配置,
原文件命名为 *.jar.original,生成新文件 *.jar
–>
<classifier>run</classifier>
</configuration> -->
</execution>
</executions>
</plugin>
</plugins>
</build>
最终结果如下图:lib包包含了jar依赖的所有外部包,项目打包的jar只有100多k