通常情况下,将SpringBoot项目使用mvn package命令打成可启动的jar包后(比如是demo-0.0.1-SNAPSHOT.jar),所有的字节码文件和依赖包都存在demo-0.0.1-SNAPSHOT.jar 中,体积是比较大的。那么我们如何将依赖的jar包和可启动的jar包分离呢,很简单,进行如下配置即可:
在pom文件中配置插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<outputDirectory>${project.build.directory}/resources</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- 依赖包输出目录 -->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
使用maven执行package命令,target目录如下,所有的依赖都打进了target/lib目录下
这种情况我们如何启动呢,使用-Dloader.path命令即可
例如 java -jar -Dloader.path=./lib demo-0.0.1-SNAPSHOT.jar