轻便的springboot打包方式
传统打包方式,把项目依赖的jar包一起打包到最终的jar里面,
如果更新频繁,每次上传到云服务器需要很久,如果可以确定在 项目依赖不会再变更 的情况下
可以将项目依赖jar包抽离出来,这样后续维护会很方便
传统打包的pom配置如下
<build>
<!--传统打包配置-->
<finalName>test</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.0.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。-->
<resource>
<!-- 描述存放资源的目录,该路径相对POM路径-->
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
打包后解压jar文件,将 BOOT-INF 文件夹下的 lib 文件夹抽离出来,打成zip包
替换pom文件打包配置如下
<build>
<!--传统打包配置-->
<finalName>test</finalName> <!-- 打出来的jar包名称 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.0.RELEASE</version>
<configuration>
<mainClass>com.test.Main</mainClass> <!-- 启动类 -->
<layout>ZIP</layout>
<!-- 依赖的jar包不打包进最终的jar -->
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
重新打包后的jar文件很小,一般是几百K
将第一步打好的zip包传到云服务器解压,比如 /www/wwwroot/test.com 目录下的某个文件夹,比如 lib 文件夹
将打好的不包含依赖包的jar传到云服务器相同目录
编辑启动脚本
nohup java -Dloader.path=./lib -jar test.jar & tail -f nohup.out
可以正常运行,以后再修改功能再打包上传云服务器就非常快,只有几百K,秒传
如果是maven父子工程,Main依赖service,common等等,如果只有service或者common工程的文件有变动,
重新打包后,只需要把服务端的lib目录下的service或者common的jar包替换就可以了