`
jjjssh
  • 浏览: 74106 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

springboot小程序maven打包自动部署线上

 
阅读更多
目标:把springboot程序打包,并且上传到服务器,然后运行
springboot工程目录结构如下:



demo1.sh如下:
#!/bin/sh
## java env
export JAVA_HOME=/usr/java/jdk1.8.0_161
export JRE_HOME=$JAVA_HOME/jre

#工程名
API_NAME=demo1-0.0.1-SNAPSHOT
JAR_NAME=$API_NAME\.jar
#PID  代表是PID文件
PID=$API_NAME\.pid

#工程路径
BASE_PATH=$(cd `dirname $0`; pwd)

echo "current path =${BASE_PATH}"

#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then 
    echo ">>> ${JAR_NAME} is already running PID=${pid} <<<" 
  else 
    nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $BASE_PATH/$JAR_NAME >/dev/null 2>&1 &
    echo $! > $PID
    echo ">>> start $JAR_NAME successed PID=$! <<<" 
   fi
  }

#停止方法
stop(){
  is_exist
  pidf=$(cat $PID)
  #echo "$pidf"  
  echo ">>> api PID = $pidf begin kill $pidf <<<"
  kill $pidf
  rm -rf $PID
  sleep 2
  is_exist
  if [ $? -eq "0" ]; then 
    echo ">>> api 2 PID = $pid begin kill -9 $pid  <<<"
    kill -9  $pid
    sleep 2
    echo ">>> $JAR_NAME process stopped <<<"  
  else
    echo ">>> ${JAR_NAME} is not running <<<"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo ">>> ${JAR_NAME} is running PID is ${pid} <<<"
  else
    echo ">>> ${JAR_NAME} is not running <<<"
  fi
}

#重启
restart(){
  stop
  start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac
exit 0


pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.xxt.demo1</groupId>
	<artifactId>demo1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo1</name>
	<description>docker</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		
		<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.14</version>
            <!-- provided-编译的时候用,打包运行的时候不需要 -->
            <scope>provided</scope>
        </dependency>
        
        
	</dependencies>

	<build>
		<extensions>
			<!-- wagon插件,把jar上传到服务器,并执行shell命令 -->
			<extension>
				<groupId>org.apache.maven.wagon</groupId>
				<artifactId>wagon-ssh</artifactId>
				<version>2.10</version>
			</extension>
		</extensions>

		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<!-- wagon插件,把jar上传到服务器,并执行shell命令 -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>wagon-maven-plugin</artifactId>
				<version>1.0</version>
				<configuration>
					<!-- 工程根目录 -->
					<fromDir>./</fromDir>
        			<includes>target/*.jar,script/*.sh</includes>
        			<url>scp://{你的服务器账号}:{你的服务器密码}@{你的服务器ip}/opt/dev/server/demo1</url>
					<commands>
						<command>mv /opt/dev/server/demo1/target/demo1-0.0.1-SNAPSHOT.jar /opt/dev/server/demo1/demo1-0.0.1-SNAPSHOT.jar</command>
						<command>mv /opt/dev/server/demo1/script/demo1.sh /opt/dev/server/demo1/demo1.sh</command>
						<command>rm -rf /opt/dev/server/demo1/target</command>
						<command>rm -rf /opt/dev/server/demo1/script</command>
						<command>chmod 777 /opt/dev/server/demo1/demo1.sh</command>
						<command>sh /opt/dev/server/demo1/demo1.sh start</command>
						<command>sh /opt/dev/server/demo1/demo1.sh status</command>
					</commands>
					<displayCommandOutputs>true</displayCommandOutputs>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>




最后右键工程->Show in -> Terminal
输入命令
mvn clean package wagon:upload wagon:sshexec -DskipTests

然后回车
效果如下






  • 大小: 58.6 KB
  • 大小: 22.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics