Springboot jar文件如何打包zip在linux环境运行

 更新时间:2020年02月19日 09:41:34   作者:泡椒炒甜瓜  
这篇文章主要介绍了Springboot jar文件如何打包zip在linux环境运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了Springboot jar文件如何打包zip在linux环境运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.添加打包配置文件

1.1 assembly.xml

<assembly
  xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
  <id>bin</id>
  <formats>
    <format>zip</format>
  </formats>
  <dependencySets>
    <dependencySet>
      <useProjectArtifact>true</useProjectArtifact>
      <outputDirectory>lib</outputDirectory>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <directory>${project.build.directory}/bin</directory>
      <outputDirectory>/bin</outputDirectory>
      <fileMode>0777</fileMode>
    </fileSet>
    <fileSet>
      <directory>${project.build.directory}/conf</directory>
      <outputDirectory>/conf</outputDirectory>      
      <fileMode>0644</fileMode>
    </fileSet>
  </fileSets>
</assembly>

1.2 serverStatus.sh

#!/bin/sh
if [ ! -n "$JAVA_HOME" ]; then
  export JAVA_HOME="/export/server/jdk1.8.0_141"
fi
APP_MAIN=${application.main.class}
PID=0

getPID(){
  javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`
  if [ -n "$javaps" ]; then
    PID=`echo $javaps | awk '{print $1}'`
  else
    PID=0
  fi
}

getServerStatus(){
  getPID
  echo "================================================================================================================"
  if [ $PID -ne 0 ]; then
    echo "$APP_MAIN is running(PID=$PID)"
    echo "================================================================================================================"
  else
    echo "$APP_MAIN is not running"
    echo "================================================================================================================"
  fi
}
getServerStatus

1.3 shutdown.sh

#!/bin/sh
if [ ! -n "$JAVA_HOME" ]; then
  export JAVA_HOME="/export/server/jdk1.8.0_141"
fi
APP_MAIN=${application.main.class}
PID=0

getPID(){
  javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`
  if [ -n "$javaps" ]; then
    PID=`echo $javaps | awk '{print $1}'`
  else
    PID=0
  fi
}

shutdown(){
  getPID
  echo "================================================================================================================"
  if [ $PID -ne 0 ]; then
    echo -n "Stopping $APP_MAIN(PID=$PID)..."
    kill -9 $PID
    if [ $? -eq 0 ]; then
      echo "[Success]"
      echo "================================================================================================================"
    else
      echo "[Failed]"
      echo "================================================================================================================"
    fi
    getPID
    if [ $PID -ne 0 ]; then
      shutdown
    fi
  else
    echo "$APP_MAIN is not running"
    echo "================================================================================================================"
  fi
}

shutdown

1.4 startup.sh

#!/bin/sh
#-------------------------------------------------------------------------------------------------------------
#该脚本的使用方式为-->[sh startup.sh]
#该脚本可在服务器上的任意目录下执行,不会影响到日志的输出位置等
#-------------------------------------------------------------------------------------------------------------
if [ ! -n "$JAVA_HOME" ]; then
  export JAVA_HOME="/export/server/jdk1.8.0_141"
fi

#-------------------------------------------------------------------------------------------------------------
#    系统运行参数
#-------------------------------------------------------------------------------------------------------------
DIR=$(cd "$(dirname "$0")"; pwd)
APP_HOME=${DIR}/..
CLASSPATH=$APP_HOME/conf
APP_LOG=${APP_HOME}/logs
APP_CONFIG=${APP_HOME}/conf/application.yml
APP_MAIN=${application.main.class}

JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -Xmn128m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:MaxGCPauseMillis=850 -XX:+PrintGCDetails -Xloggc:$APP_LOG/gc.log -Dfile.encoding=UTF-8"
JAVA_OPTS="$JAVA_OPTS -DlogPath=$APP_LOG"
JAVA_OPTS="$JAVA_OPTS -Dconf.config=file:${APP_CONFIG}"

echo "JAVA_HOME="$JAVA_HOME
echo "CLASSPATH="$CLASSPATH
echo "JAVA_OPTS="$JAVA_OPTS

#-------------------------------------------------------------------------------------------------------------
#  程序开始
#-------------------------------------------------------------------------------------------------------------
for appJar in "$APP_HOME"/lib/*.jar;
do
  CLASSPATH="$CLASSPATH":"$appJar"
done
PID=0

getPID(){
  javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`
  if [ -n "$javaps" ]; then
    PID=`echo $javaps | awk '{print $1}'`
  else
    PID=0
  fi
}

startup(){
  getPID
  echo "================================================================================================================"
  if [ $PID -ne 0 ]; then
    echo "$APP_MAIN already started(PID=$PID)"
    echo "================================================================================================================"
  else
    echo -n "Starting $APP_MAIN"
     if [ ! -d "$APP_LOG" ]; then
      mkdir "$APP_LOG"
     fi
    nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAIN &
    for i in $(seq 5)
    do
    sleep 0.8
    echo -e ".\c"
    done
    getPID
    if [ $PID -ne 0 ]; then
      echo "(PID=$PID)...[Success]"
      echo "================================================================================================================"
    else
      echo "[Failed]"
      echo "================================================================================================================"
    fi
  fi
}

startup

1.5 run.bat

title face-server
@echo off 
rem ##############设置延迟环境变量扩充,即感叹号间的值不会因跳出循环而为空值。################
setlocal enabledelayedexpansion 

rem ###############java命令######################
set JAVA=%JAVA_HOME%\bin\java.exe 

rem ###############jvm参数######################
set OPTS=-Xms512M -Xmx512M -XX:+AggressiveOpts -XX:+UseParallelGC -XX:NewSize=64M 

rem ###############agent启动类参数######################
set serverMain=cn.micropattern.face.Application

echo JAVA: %JAVA% 
echo CLASSPATH: %CP% 
echo OPTS: %OPTS%
java %OPTS% -cp "../lib/*;../conf" %serverMain% 
PAUSE

2.打包install -Dmaven.test.skip=true

执行完命令后zip包在target文件路径下生成

3.linux启动服务

上传并解压zip包

启动成功

4.测试

测试成功

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 手把手教你从零设计一个java日志框架

    手把手教你从零设计一个java日志框架

    Java里的各种日志框架,相信大家都不陌生。Log4j/Log4j2/Logback/jboss logging等等,其实这些日志框架核心结构没什么区别,只是细节实现上和其性能上有所不同。本文带你从零开始,一步一步的设计一个日志框架
    2021-02-02
  • 深入理解java内置锁(synchronized)和显式锁(ReentrantLock)

    深入理解java内置锁(synchronized)和显式锁(ReentrantLock)

    这篇文章主要介绍了Java多线程之内置锁(synchronized)和显式锁(ReentrantLock)的深入理解新的和用法,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Spring Cloud升级最新Finchley版本的所有坑

    Spring Cloud升级最新Finchley版本的所有坑

    这篇文章主要介绍了Spring Cloud升级最新Finchley版本的所有坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Java匿名类和匿名函数的概念和写法

    Java匿名类和匿名函数的概念和写法

    匿名函数写法和匿名类写法的前提必须基于函数式接口匿名函数写法和匿名类写法其本质是同一个东西,只是简化写法不同使用Lambda表达式简写匿名函数时,可以同时省略实现类名、函数名,这篇文章主要介绍了Java匿名类和匿名函数的概念和写法,需要的朋友可以参考下
    2023-06-06
  • Java中使用Java Mail实现邮件服务功能示例

    Java中使用Java Mail实现邮件服务功能示例

    这篇文章主要介绍了Java中使用Java Mail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结果,需要的朋友可以参考下
    2025-01-01
  • java中abstract修改类的实例方法

    java中abstract修改类的实例方法

    在本篇文章里小编给各位分享了一篇关于java中abstract修改类的实例方法,有需要的朋友们可以学习下。
    2020-12-12
  • 如何使用MAVEN打JAR包(直接使用)

    如何使用MAVEN打JAR包(直接使用)

    这篇文章主要介绍了如何使用MAVEN打JAR包(直接使用),文中通过实例代码介绍了maven 使用assembly插件进行打包的方法,需要的朋友可以参考下
    2023-03-03
  • springboot中JSONObject遍历并替换部分json值

    springboot中JSONObject遍历并替换部分json值

    这篇文章主要介绍了springboot中JSONObject遍历并替换部分json值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • JAVA文件扫描(递归)的实例代码

    JAVA文件扫描(递归)的实例代码

    这篇文章主要介绍了JAVA文件扫描(递归)的实例代码 ,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Java 图片与byte数组互相转换实例

    Java 图片与byte数组互相转换实例

    下面小编就为大家带来一篇Java 图片与byte数组互相转换实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论