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.测试

测试成功

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

(0)

相关推荐

  • Linux下部署springboot项目的方法步骤

    最近在研究将springboot项目部署到Linux服务器上,由于springboot是内嵌了tomcat,所以可以直接将项目打包上传至服务器上. 1.在pom文件中添加springboot的maven插件 <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> spring-boot-maven-plugin</artifactid> </p

  • Linux启动与停止spring boot工程的脚本示例

    在springboot项目启动有三种方式: 1.运行主方法程序 2.使用命令mvn spring-boot:run 在命令行运行 3.使用 mvn packpage打包位jar文件以后,使用java -jar yourapp.jar命令行运行 一般我们在开发的时候经常使用的是前面两种运行方式,在部署实施的时候使用的第三种方式,下面我们就重点说明下载linux环境中运行和停止springboot项目的指令和脚本: 一.指令 nohup 不挂断运行指令 一般在linux中可以直接使用: java -

  • springboot打包部署到linux服务器的方法

    1.由于springboot集成了tomcat,所以打包的时候不再使用war,而是使用jar <groupId>cn</groupId> <artifactId>back</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> 2.将springboot启动类添加继承SpringBootServletInitialize

  • 使用linux部署Spring Boot程序

    SpingBoot的学习总算告一段落了,但它还留给了我们一个疑问,那就是程序在linux服务器上应该怎么部署?使用命令启动程序后如果ssh断开了程序会不会被shutdown?对于第一个问题比较好解决,只需要保证jdk安装正确就不会有太大问题.棘手的问题是后面这个,解决问题的关键就是要保证程序以守护进程(后台方式)运行.这次就分享下linux下如何正确部署程序 为了解决这个问题,我查阅网上的资料找到了下面3种解决方案 1   把jar包弄成系统服务(不推荐) 这种方法缺点也比较明显,那就是容易出现

  • Linux编辑启动、停止与重启springboot jar包脚本实例

    前言 springboot的配置文件中,配置文件的名字都有各自的意义跟用途 dev 开发环境 prod 生产环境(默认) test 测试环境 加载指定配置文件 --spring.profiles.active=prod springboot加载jar包的方式有 // 直接在控制台进行启动,缺点就是控制台关闭项目也就关闭了. java -jar bootdo.jar // 这种方式可以运行在后台,但是如果推出了shell的话,那也会挂 java -jar /bootdo-2.0.0.jar > b

  • springboot 在linux后台运行的方法

    首先需要进到自己springboot项目的根目录,然后执行如下linux命令 nohup java -jar 自己的springboot项目.jar >日志文件名.log 2>&1 & 命令详解: nohup:不挂断地运行命令,退出帐户之后继续运行相应的进程. >日志文件名.log:是nohup把command的输出重定向到当前目录的指定的"日志文件名.log"文件中,即输出内容不打印到屏幕上,而是输出到"日志文件名.log"文件中

  • springboot部署linux访问服务器资源的方法

    部署springboot项目至服务器用了几种不同方式,现一一记录下来 例: 一.使用外置Tomcat 打成War包,Tomcat下文件新增虚拟路径 conf/server.xml <Context docBase="/data/pic/" path="/pic" debug="0" reloadable="true" /> 可通过  ip:port/pic/cat.jpg 访问 二.打成jar包使用内置Tomcat

  • Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法

    废话不多说了,先给大家上代码,具体代码如下所示: #!/bin/bash cd `dirname $0` CUR_SHELL_DIR=`pwd` CUR_SHELL_NAME=`basename ${BASH_SOURCE}` #修改这里jar包名即可 JAR_NAME="xxxxxxxxxxxx.jar" JAR_PATH=$CUR_SHELL_DIR/$JAR_NAME #JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:Pe

  • 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/2

  • maven打包zip包含bin下启动脚本的完整代码

    maven打包zip包含bin下启动脚本,这个脚本小编在idea上测试有效: pom.xml打包 <build> <sourceDirectory>src/main/scala</sourceDirectory> <testSourceDirectory>src/test/scala</testSourceDirectory> <resources> <resource> <directory>src/main

  • 一文解决springboot打包成jar文件无法正常运行的问题

    1.用intellij idea 创建了一个springboot的项目,前期都运行的好好的,在ide中可以正常运行,但是打包成Jar运行却一直报错. 2.经过不懈探索,终于找到解决办法 3.首先,找到pom.xml,把下面的build块中的内容改成如下所示 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-

  • 手把手教你用SpringBoot将文件打包成zip存放或导出

    环境准备 其实也没什么准备,准备好Springboot就行,还有几张图片: 将文件打包成Zip存放 代码 Controller代码: @RequestMapping("/zip") @RestController public class ZipController { /** * 将文件打包成zip并存放在特定位置 */ @PostMapping("package") public void packageFileToZip() throws IOExceptio

  • 教你1秒将本地SpringBoot项目jar包部署到Linux环境(超详细!)

    目录 目标 迭代步骤 一.前提: 1.使用Maven的package命令打出一个携带依赖的jar包 2.Window启动jar包 二.linux环境启动jar包 1.先将jar包扔到linux环境 2.测试是否可以启动(需要有Java环境) 3.优化启动脚本,改为后台启动,并将日志输出到springboot.log 4.完善脚本,启动时,如果存在已经启动的服务,先关闭,再启动 三.分离依赖部署 1.上传依赖jar包Linux服务器 2.改造项目的pom.xml文件 3.重新package 4.上

  • 解决SpringBoot jar包中的文件读取问题实现

    前言 SpringBoot微服务已成为业界主流,从开发到部署都非常省时省力,但是最近小明开发时遇到一个问题:在代码中读取资源文件(比如word文档.导出模版等),本地开发时可以正常读取 ,但是,当我们打成jar包发布到服务器后,再次执行程序时就会抛出找不到文件的异常. 背景 这个问题是在一次使用freemarker模版引擎导出word报告时发现的.大概说一下docx导出java实现思路:导出word的文档格式为docx,事先准备好一个排好版的docx文档作为模版,读取解析该模版,将其中的静态资源

  • SpringBoot打包发布到linux上(centos 7)的步骤

    打包发布 jar包部署相对较为简单,尤其是在分布式服务比较多的情况下. 单体项目 如果是单体项目,只需要找到maven的插件,点击package运行.注意是Lifecycle下的插件,"Plugins"下的插件不一定有用. 打包完了后,去target包下找到自己的jar包.如果你的项目交给git管理,并且在idea里配置过部分文件忽略不提交,那么很有可能已经被你隐藏起来了. 右击项目,选择show in explorer,在win10的文件管理器里就可以看到target了 多模块项目(

  • SpringBoot项目jar和war打包部署方式详解

    目录 jar与war jar包部署运行 war包部署运行 jar与war Spring Boot项目开发完成后,需要以jar或war的方式将项目打包部署到测试开发环境. jar即Java Archive,是Java归档文件,该文件格式与平台无关,它允许将许多文件组合成一个压缩文件.Java程序都可以打成jar包,目前Docker广泛使用,Java项目都会打成可执行的jar包,最终构建为镜像文件来运行. jar文件格式基于流行的ZIP文件格式.与ZIP文件不同的是,jar文件不仅用于压缩和发布,而

  • 二种jar包制作方法讲解(dos打包jar eclipse打包jar文件)

    1.在dos下面打包jar文件 复制代码 代码如下: D:\jdk1.5.0_07\bin> jar  /help 用法:jar  {ctxu}[vfm0Mi]  [jar-文件]  [manifest-文件]  [-C  目录]  文件名  ... 选项: -c  创建新的存档 -t  列出存档内容的列表 -x  展开存档中的命名的(或所有的]文件 -u  更新已存在的存档 -v  生成详细输出到标准输出上 -f  指定存档文件名 -m  包含来自标明文件的标明信息 -0  只存储方式:未用Z

随机推荐