springboot项目打包的时候,如果maven依赖过多的话打的包会非常大,需要频繁上传到服务器时效率非常低。我们打包的时候可以将maven依赖和程序包分开,若仅仅是代码有改动那我们就不用再重复上传依赖包了。
去掉pom.xml中的spring-boot-maven-plugin插件,并在pom.xml中加入如下plugin配置:
<!-- 打jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path 加入前缀 -->
<classpathPrefix>lib/</classpathPrefix>
<!--指定入口类 -->
<mainClass>com.qiwan.researchtec.ResearchtecApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 复制依赖的jar包到指定的文件夹里,相当于:mvn dependency:copy-dependencies -DoutputDirectory=lib -->
<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>
</configuration>
</execution>
</executions>
</plugin>
package或者install之后,在target目录下能看到程序包和依赖包就分离了,如图:
如果想把项目中引用的本地jar包
也打入lib
包中则需要在build结点下加入如下resources配置:
<resources>
<!-- 把src/main/lib目录下引用的本地jar打包到lib目录下(maven依赖的jar也会在该目录)-->
<resource>
<!-- 这里是把项目中用到的本地jar放在了该目录 -->
<directory>${project.basedir}/src/main/lib</directory>
<!-- package时指定项目中src/main/lib包中的本地jar的输出目录 -->
<targetPath>${project.build.directory}/lib</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<!-- package 时把 resources 下的资源文件打到 jar 包的一级目录 -->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
最后把程序包和lib包放在同一个目录就可以正常启动了。