spring boot打包部署问题解决
程序员文章站
2022-03-17 23:21:50
...
基于Maven打包部署spring boot项目,在网上大部分都是:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <mainClass>${start-class}</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
问题是打包后整个项目是jar,它所依赖的其它jar也会包含进去,导致整个项目很大,每次更新项目都得整个jar包更新,很麻烦。
那有没有一种方式是把项目依赖的jar单独出来?在部署更新项目时,只需要更新项目自身代码,不用更新依赖包。
项目jar包解压出来后的目录结构:
解决方法就是,在pom中改用以下配置:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <layout>ZIP</layout> <minimizeJar>true</minimizeJar> </configuration> </plugin>
打包后得到的项目tboot.jar,拷贝lib出来,然后直接从jar中删除lib及目录下的依赖包
这样得到我们的业务代码,部署到Linux服务器上,lib依赖包单独存放:
启动项目的命令:java -Dloader.path="lib/" -jar tboot.jar
项目正常运行
另外附上后台后台启动的方式,已经编写好shell脚本startup.sh(该脚本文件跟项目tboot.jar放同一目录下):
#!/bin/sh #功能简介:启动上层目录下的jar文件 #参数简介: # $1:jar文件名(包含后缀名) # 注意:jar文件必须位于startup.sh目录的上一层目录。 #启动参数 JAVA_OPTS="-server -Xms400m -Xmx400m -Xmn300m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xverify:none -XX:+DisableExplicitGC -Djava.awt.headless=true" jar_name=$1 this_dir="$( cd "$( dirname "$0" )" && pwd )" parent_dir=`dirname "${this_dir}"` log_dir="${parent_dir}/logs" log_file="${log_dir}/catalina.out" jar_file="${jar_name}" #依赖包目录(相对路径) lib_dir="lib/" #参数个数<1或者参数空值时,中断执行 if [ $# -lt 1 ] || [ -z $1 ]; then echo -e "\033[31m请输入要部署的jar包名称!\033[0m" exit 1 fi #日志文件夹不存在,则创建 if [ ! -d "${log_dir}" ]; then mkdir "${log_dir}" fi #父目录下jar文件存在 if [ -f "${jar_file}" ]; then #启动jar包;重定向标准错误输出到文件,丢掉标准输出 java $JAVA_OPTS -Dloader.path=${lib_dir} -jar ${jar_file} 1>/dev/null 2>"${log_file}" & exit 0 else echo -e "\033[31m${jar_file}文件不存在!\033[0m" exit 1 fi
补充:Maven打可执行Jar包的插件配置(基于Dubbo)
推荐阅读
-
Spring Boot 打包插件,真是太有用了!
-
Spring框架学习笔记(6)——阿里云服务器部署Spring Boot项目(jar包)
-
spring boot devtools在Idea中实现热部署方法
-
Spring boot项目部署到云服务器小白教程详解
-
Spring Boot 配置 IDEA和DevTools 热部署的方法
-
Spring Boot Docker打包工具小结
-
Spring Boot与前端配合与Idea配置部署操作过程
-
使用Docker部署 spring-boot maven应用的方法
-
Vue项目部署在Spring Boot出现页面空白问题的解决方案
-
Spring Boot(十二):Spring Boot 如何测试打包部署