您的位置:首页 > 运维架构 > Linux

Linux SpringBoot项目、jar包部署,shell脚本

2019-01-22 10:48 876 查看

springboot 是默认集成Tomcat容器的,将项目打包成jar包库、使用Java直接启动jar包(非spring boot也可以)

1:首先需要在服务器端安装jdk、maven、本文还安装了git,方便拉取要部署的项目

2:想要SpringBoot项目使用maven打包成jar包需先在项目中的pom添加build插件,代码如下

[code]<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>compile</includeScope>
<!--<includeScope>runtime</includeScope>-->
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- <outputDirectory>libs</outputDirectory> -->
<excludeTransitive>false</excludeTransitive>
<stripVersion>true</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

此插件是指将项目所依赖的jar,打包的时候打包到libs目录下,一遍到时候编写shell脚本读取依赖的jar

3:接下来就可以编写shell脚本了(get源码的方式有很多种,直接上传上去也行。本文将使用Git在服务器端直接拉取源码,编译打包,启动)

[code]#打包完后的jar名称,替换成你自己项目的名称,该名称可以在maven项目的pom中配置
proc="start-application-1.0-SNAPSHOT.jar"

#启动类的包名+类名
start_main_class="com.StartApplication"

#项目源码的目录地址(初始可能需要自己从Git拉下来)
SOURCE_HOME="/opt/mxb-test/source/fc-dev-power"

#jdk加入到环境变量,jdk地址不同替换下面地址
JAVA_HOME="/usr/local/jdk1.8.0_161"

PATH="$JAVA_HOME/bin:$PATH"
CLASSPATH="$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH"
export JAVA_HOME
export PATH
export CLASSPATH

#JVM启动参数,关于JVM调优这里不介绍,感兴趣的可以自行百度 JVM调优
JAVA_OPTS="-server -Xms2048M -Xmx2048M -Xss256k -Xmn768m -XX:SurvivorRatio=4 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=256M  -XX:CMSInitiatingOccupancyFraction=90 -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=0 -XX:CMSFullGCsBeforeCompaction=100 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"

#编写启动方法
start() {

#到项目源码目录
cd $SOURCE_HOME

#输出,准备获取最新代码
echo -n "git pull source ,please wait ....."

#获取最新代码,此列只在目录所在分支pull
#若想部署指定分支代码,可以在脚本调用参数中添加一个变量,用git checkout ${targer_branch}
git pull

#输出,最新代码已拉取完毕,准备打包
echo -n "mvn package source ,please wait ....."

#maven打包命令,此处特别注意是 —U ,是指引用快照版本的jar(引用自己的项目)每次都更新最新的。
mvn clean package -U

#打包成功后默认是在启动项目的target目录下。
cd target

#输出,准备启动
echo -n $"Starting $proc:"

#循环加载所需的jar,此处和2的pom配置有关
for name in ./libs/*.jar
do
APP_CLASS="$APP_CLASS:$name"
done

#启动脚本,--spring.profiles.active=   用于设置环境所使用的配置文件
JAVA_CMD="java $JAVA_OPTS -classpath $CLASSPATH:$APP_CLASS:$proc $start_main_class --spring.profiles.active=test"

#后台运行
echo "$JAVA_CMD"

#启动成功
echo $"start  ------------------------------------------------------------------------------------------------------------------------------------------------"

}

#停止方法,此处不用更改,是通过启动类名jar等检索出Java线程,kill
stop() {
echo -n $"Stopping $proc:"
aaa=$(ps aux | grep $proc |grep -v "grep" | awk '{print $2}')
#aaa=$(ps -ef | grep  "jar $proc"  | awk '{print $2}')
echo -n
if [ -z $aaa ]; then
echo "can't find this process"
exit 1
else
kill -9 $aaa
fi

}

#设置脚本参数,启动的时候可以采用./脚本名称.sh start/stop/restart等参数
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
esac

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: