打包参考:
- 打zip包包含class:https://www.cnblogs.com/jimmyfan/p/11340899.html
- 打zip包包含jar:https://blog.csdn.net/u011177064/article/details/104038302
正常maven打包配置:
org.springframework.boot spring-boot-maven-plugin
- maven命令打包:mvn package 或 mvn -Dmaven.test.skip=true package
- idea图像化界面
使用maven的assembly打包插件。
- pom添加配置:pom.xml
maven-resources-plugin compile-resources resources utf-8 true src/main/resources/ true *.yml src/main/resources/ false copy-resources resources utf-8 true src/main/resources/ true *.yml src/main/resources/ false ${project.build.directory}/conf org.springframework.boot spring-boot-maven-plugin maven-assembly-plugin false src/main/resources/assembly.xml make-assembly package single org.apache.maven.plugins maven-surefire-plugin 2.22.1 true
- 添加打包配置文件:resources/assembly.xml
package zip tar.gz true true lib ${groupId}:${artifactId} bin /bin 777 ${project.build.directory}/conf /conf ${project.build.directory}/classes /classes **/*.class meta-INF/*
- 启动脚本:编写后可添加压缩到bin目录下
## -----./bin/start.sh
#!/bin/bash
# java程序所在目录
APP_HOME=..
# 需要启动的java主程序
APP_MAIN_CLASS="com.xiaoai.PoiTestApplication"
# 拼凑完整classpath参数,包括指定lib目录下所有jar
CLASSPATH="$APP_HOME/conf:$APP_HOME/lib/*:$APP_HOME/classes"
s_pid=0
checkPid() {
java_ps=`jps -l | grep $APP_MAIN_CLASS`
if [ -n "$java_ps" ];then
s_pid=`echo $java_ps | awk '{print %1}'`
else
s_pid=0
fi
}
start() {
checkPid
if [ $s_pid -ne 0 ];then
echo "================================================================"
echo "warn: $APP_MAIN_CLASS already started! (pid=$s_pid)"
echo "================================================================"
else
echo -n "Starting $APP_MAIN_CLASS ..."
nohup java -classpath $CLASSPATH $APP_MAIN_CLASS >./st.out 2>&1 &
checkPid
if [ $s_pid -ne 0 ]; then
echo "(pid=$s_pid)[ok]"
else
echo "[Failed]"
fi
fi
}
echo "start project......"
start
## -----./bin/start.cmd
@echo off
set APP_HOME=..
set CLASS_PATH=%APP_HOME%/lib/*;%APP_HOME%/classes;%APP_HOME%/conf;
set APP_MAIN_CLASS=【主类路径 如:com.xiaoai.PoiTestApplication】
- 目录结构:上传zip解压到一个目录下。
- bin:启停脚本
- classes:编译后文件
- conf:编译后相关配置配置文件 如:application.yml等
- lib:依赖jar
使用maven的assembly打包插件。
相当于打包进行配置分离,避免配置修改每次都需要从新打jar包上传服务器部署。
- pom添加配置:pom.xml
org.apache.maven.plugins maven-jar-plugin false true lib/ com.xiaoai.PoiTestApplication org.apache.maven.plugins maven-assembly-plugin src/main/resources/assembly.xml make-assembly package single org.apache.maven.plugins maven-surefire-plugin true
- 添加打包配置文件:resources/assembly.xml
bin zip false false lib false ${project.basedir} README* LICENSE* NOTICE* ${project.basedir}/src/main/resources config ${project.basedir}/src/main/bin bin ${project.build.directory} *.jar
- 启动脚本
## -----./bin/start.sh nohup java -jar -Dloader.path=..,../lib,../config ../poitest-0.0.1-SNAPSHOT.jar >../console.log 2>&1 & ## -----在jar包当前目录下重启动命令:指定配置文件 nohup java -jar -Dloader.path=.,./lib,./config -Dspring.config.location=./config/application.yml ./poitest-0.0.1-SNAPSHOT.jar >./console.log 2>&1 &
- 目录结构:上传zip解压到一个目录下。
- bin:启停脚本
- config:编译后配置文件 如:application.yml等
- lib:依赖jar
- 文件console.log:运行日志
- 文件info.txt:记录重启命令
- jar包:打包的项目jar
项目的jar包也可以移动到lib目录下和其他jar包放一起,但需要注意启动时候的命令。



