Spring Boot 项目jar包瘦身/lib文件夹导出(分离)
因为项目依赖很少变动,而且每次传阿里云上,jar包大,速度慢...
所以,把xxx.jar里面的lib文件导出,先放到到云服务器上,然后编译不带上依赖库文件
新多了依赖可以注释<configuration>
编译来重来一遍
瘦身前,用一个解压软件,把打包好的完整jar文件里的lib拉出来
大概目录是下/BOOT-INF/
,可以看到一个lib
文件夹` 就是要把这个lib拖出来,放到云服务器上,具体看jar放哪,这里是同级哦
修改项目的pom.xml
文件
其中spring-boot-maven-plugin
是一般都自带的,在下面加个<configuration>
标签,具体可以看代码,inluce→nothing就是都不包含进去
<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>
</plugins>
</build>
编译jar包前先clean
一波,然后再次编译(可以检查下jar包大小)
把瘦身后的jar包拖到lib同级目录(总之放一起,运行的命令可以短一点)
运行指令 重要的地方就是-Dloader.path=lib
指定依赖库的位置
-
nohup java -Dloader.path=lib -jar english-bbs-0.1.jar & # 这是后台不挂断运行,并且把输出定向到
nohup.out
-
├── lib # lib文件夹
├── nohup.out # 项目运行的输入
└── xxxx-0.0.1-SNAPSHOT.jar
TODO 指令还是有点长,等学完shell写个运行脚本提高下效率
需求:关闭之前正在运行中的项目 运行项目 输出运行结果
参考代码: 老早前看到的 不记得出处了
#!/usr/bin/env bash
#!/bin/sh
RESOURCE_NAME=ying-0.0.1-SNAPSHOT.jar
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 5
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'App is running.'
else
echo 'App is NOT running.'
fi
rm -f tpid
nohup java -jar ./$RESOURCE_NAME & tail -f nohup.out
echo $! > tpid
echo Start Success!