idea 打包 jar 或者直接运行class 二选一 发布教程 适合任何java项目 只要可以正常运行 绝对发布成功 直接运行 没有任何问题 !
首先如图
接着默认选项 注意的地方红框 其他都不需要注意!记住main class脚本要用
导出所有lib包 选择输出目录到 你的项目编译目录target 创建lib文件夹 lib下 只要你的项目在idea里跑过 就会有target这个目录 在src目录同一个目录下
接下来是重点 分析你的项目编译文件夹target 你只要运行过java 就会生成所有class文件在这个目录classes内 然后lib里有 打包好的所有依赖jar 还有你项目的jar 注意这是二选一的重点! 既有class文件还有打包好的jar 下面写脚本 可以随便你切换是用classes里面的编译好的 还是用生成的jar
脚本放在target上一个目录 叫start.bat linux注意换掉;为:就行
start.bat 内容 com.linlongyx.startup.CrossServer 改为你的 main class
CHCP 65001
java -classpath ".;./target/lib/*;./target/classes;" com.linlongyx.startup.CrossServer
pause
然后直接运行start.bat 现在这个脚本运行执行的是你target/lib 里的项目的sanguoCenter.jar 执行jar文件 删掉这个jar文件 执行的就是classes 里面的class文件 随你怎么用! 能听懂点赞!
cd `dirname $0`
BIN_DIR=`pwd`
for i in $BIN_DIR/classes/*.jar;
do CLASSPATH=$i:"$CLASSPATH";
done
nohup /usr/java/jdk-11.0.15.1/bin/java -Dfile.encoding=UTF-8 -classpath $CLASSPATH:"$BIN_DIR/classes" com.kion.fms.commonservice.FMSCommonServiceApplication >> $BIN_DIR/nohup.log 2>&1 &
echo $! > $BIN_DIR/savePid.txt
cat $BIN_DIR/savePid.txt
tail -f $BIN_DIR/nohup.log
.jarl 的包 直接放在com同目录下 加上 :"classes" 这一句 可以原本的.jar运行解压出来方便修改
对应stop.sh 优雅的关闭掉开启的java程序
#!/bin/bash
PID=`cat savePid.txt`
cd `dirname $0`
BIN_DIR=`pwd`
cd ..
DEPLOY_DIR=`pwd`
LOGS_DIR=$DEPLOY_DIR
if [ ! -d $LOGS_DIR ]; then
mkdir $LOGS_DIR
fi
STDOUT_FILE=$LOGS_DIR/stdout.log
#PID=`ps -ef | grep -v grep | grep "$DEPLOY_DIR" | awk '{print $2}'`
echo "PID: $PID"
if [ -z "$PID" ]; then
echo "ERROR: The server does not started!"
exit 1
fi
echo -e "Stopping the server ...\c"
kill $PID > $STDOUT_FILE 2>&1
COUNT=0
while [ $COUNT -lt 1 ]; do
echo -e ".\c"
sleep 1
COUNT=1
PID_EXIST=`ps -f -p $PID | grep java`
if [ -n "$PID_EXIST" ]; then
COUNT=0
fi
done
echo "stopped"
echo "PID: $PID"