spring boot打包部署问题解决

基于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 
启动命令:

./startup.sh tboot.jar


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值