背景:微服务架构,每个jar包都有100多M,传包速度又很慢,有点折磨
pom文件引入以下配置
<build>
<!-- 打出的jar包包名 -->
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.5</version>
<configuration>
<!-- 项目启动文件路径 -->
<mainClass>com.violet.BaseServerApplication</mainClass>
<!-- 解决windows命令行窗口中文乱码 -->
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<layout>ZIP</layout>
<!-- 配置需要打包进项目的jar包 -->
<includes>
<!-- 需要排除所有依赖 配置non-exists这个就行 -->
<!--<include> -->
<!-- <groupId>non-exists</groupId> -->
<!-- <artifactId>non-exists</artifactId> -->
<!--</include> -->
<!-- 需要打包进jar包的依赖配置在这里 -->
<include>
<groupId>com.violet</groupId>
<artifactId>base-api</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 项目打包分离项目代码和依赖jar 插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- 抽出的lib包存放了路径 -->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<!-- 是否排除依赖传递性 -->
<excludeTransitive>false</excludeTransitive>
<!-- 是否去掉jar包版本信息 -->
<stripVersion>false</stripVersion>
<!-- 包含范围 -->
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
jar包启动脚本如下
#!/bin/bash
#-Xms: 设置初始化堆内存大小;
#-Xmx: 设置最大可分配堆内存大小
#MetaspaceSize:元空间默认大小
#MaxMetaspaceSize:元空间最大大小
#JVM参数
JVM_OPTS="-Xms128m -XX:MetaspaceSize=128M -Xmx128m -XX:MaxMetaspaceSize=512M -Dfile.encoding=utf-8"
#日志输出路径
LOG_HOME="/opt/data/logs/"
#服务名称
SERVER_NAME="base-server"
#当前日期 如:2022-01-01
TODAY=$(date -d "now" +"%Y-%m-%d")
LOG_PATH="${LOG_HOME}${SERVER_NAME}/${TODAY}/deb.log"
ACTIVE="test"
#脚本绝对路径
SCRIPT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
JAR_PATH="${SCRIPT_DIR}/${SERVER_NAME}.jar"
LIB_PATH="${SCRIPT_DIR}/lib"
#杀死已有进程
echo stop ${SERVER_NAME} ..
PID=$(ps -ef | grep ${SERVER_NAME}.jar | grep -v grep | awk '{print $2}')
if [ ! $PID ]; then
echo "process ${SERVER_NAME} not exit"
else
echo "process id: $PID"
kill -9 ${PID}
if [ $? -eq 0 ]; then
echo "stop ${SERVER_NAME} success"
else
exit
fi
fi
echo start ${SERVER_NAME} ..
#启动jar包 输出启动日志
nohup java ${JVM_OPTS} -jar -Dloader.path=${LIB_PATH} ${JAR_PATH} -Dspring.profiles.active=${ACTIVE}>${LOG_PATH} 2>&1 & tail -200f ${LOG_PATH}
echo 'start successful'
网友评论