`
jjjssh
  • 浏览: 77207 次
  • 性别: 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
分享到:
评论

相关推荐

    基于springboot大学校园二手书籍拍卖微信小程序源码数据库文档.zip

    标题中的“基于SpringBoot大学校园二手书籍拍卖微信...这个项目是一个综合性的实践案例,涵盖了Web开发的多个方面,对于学习和理解SpringBoot、微信小程序开发,以及如何构建完整的线上拍卖系统,都有很高的参考价值。

    基于springboot藏区特产销售平台.zip

    总的来说,这个项目是一个集成了前端和后端的完整电商系统,利用了SpringBoot的高效性和微信小程序的便捷性,为用户呈现了一个全面的藏区特产销售平台。通过学习和分析这个项目,开发者可以提升自己的Java Web开发...

    基于springboot鞋类秒杀商城.zip

    这个项目可能包含了完整的后台管理系统和前端展示,旨在实现线上鞋类产品秒杀功能,同时也考虑到了用户体验,通过微信小程序进行交互。 【描述】"基于SpringBoot鞋类秒杀商城.zip"的描述暗示了这是一个Java开发的...

    基于ssm居住证申报系统微信小程序源码数据库文档.zip

    该压缩包文件“基于ssm居住证申报系统微信小程序源码数据库文档.zip”是一个完整的项目资源包,主要用于毕业设计,涵盖了微信小程序开发以及后端服务器的实现。此项目利用了SSM(Spring、SpringMVC、MyBatis)框架与...

    基于微信小程序的付费自习室系统.zip

    【标题】中的“基于微信小程序的付费自习室系统”是一个集成技术的应用实例,它利用微信小程序作为前端界面,为用户提供在线预订和支付功能,以便在自习室进行学习。这一系统通常包括用户管理、自习室资源管理、预约...

    员工管理系统(SpringBoot+Mybatis+Thymeleaf).zip

    - 部署上线:打包应用,部署到服务器,进行线上环境的调整优化。 这个员工管理系统项目是IT专业学生提升实战技能的理想实践,涵盖了从需求分析到系统上线的完整流程,对于理解企业级应用开发有极大的帮助。通过...

    Java基于springboot的毕业就业信息管理系统的设计与实现.rar

    最后,将项目打包部署到服务器,如AWS、阿里云等云服务提供商,以实现线上运行。 综上所述,这个基于Java和SpringBoot的毕业就业信息管理系统,融合了现代化的开发技术和管理理念,旨在为高校提供一套高效、安全、...

    基于ssm+jsp技术的金融支付终端管理系统.zip

    9. **部署上线**:打包项目,部署到服务器,确保线上环境正常运行。 以上是对基于SSM+jsp技术的金融支付终端管理系统的核心知识点介绍,涵盖了SSM框架的使用、SpringBoot的优势、微信小程序的接入以及项目实施的...

    基于ssm+vue的木里风景文化管理平台.zip

    8. **部署上线**:打包项目,部署到服务器,进行线上调试。 通过这个项目,开发者可以学习到Java后端开发、前端Vue.js应用以及微信小程序的开发技巧,同时了解如何整合这些技术构建一个完整的管理平台。

    基于ssm网上订餐系统.zip

    【标题】: "基于SSM的网上订餐系统" 该标题揭示了项目的核心技术栈,即Spring、SpringMVC...通过研究和运行这个项目,开发者可以深入了解SSM框架的应用、微信小程序的开发,以及如何构建一个完整的线上订餐服务系统。

    基于ssm电子竞技管理平台.zip

    【SSM电子竞技管理平台】是一个综合性的项目,利用了Java技术栈,特别是Spring、SpringMVC和MyBatis三个框架的集成(SSM),以及SpringBoot和微信小程序的前沿技术,旨在为电子竞技赛事的组织、管理和参与提供便捷的...

    基于ssm数字图像处理教学演示系统.zip

    - 部署上线:打包项目,部署到服务器,进行线上测试。 这个系统不仅涵盖了丰富的IT技术,而且将理论与实践相结合,是学习和教学数字图像处理的理想平台。通过实际操作,用户可以深入理解图像处理的原理,并掌握...

    Java商城 免费 开源 CRMEB商城.rar

    CRMEB商城JAVA版,SpringBoot + Maven + Swagger + Mybatis Plus + Redis + Uniapp +Vue 包含移动端、小程序、PC后台、Api接口;有产品、用户、购物车、订单、积分、优惠券、营销、余额、权限、角色、系统设置、组合...

    基于SSM的宠物领养系统.zip

    5. **部署文件**:如`pom.xml`(Maven项目)或`build.gradle`(Gradle项目),用于构建和打包项目。 6. **README**:可能包含项目介绍、如何运行和部署的指南。 7. **测试文件**:JUnit或其他测试框架编写的单元测试...

    基于ssm校园订餐系统.zip

    【标签】:“毕业设计 Java springboot ssm 微信小程序” 这里的标签提供了更多关于项目的信息。"毕业设计"意味着这个系统可能是某位学生作为其毕业作品完成的,通常这类设计需要涵盖全面的技术应用和实际问题解决...

    基于ssm的在线医疗信息服务系统.zip

    “微信小程序”标签暗示了该项目还包含一个与之配套的微信小程序版本,方便用户通过微信平台进行操作。"springboot"虽然在标题中未提及,但在标签中出现,可能意味着部分或全部服务采用了Spring Boot框架,它简化了...

    基于ssm的网上招投标系统.zip

    5. **部署文件**:如`pom.xml`(Maven项目配置文件)或`build.gradle`(Gradle构建文件),用于构建和打包应用。 6. **测试文件**:如JUnit测试用例,确保功能的正确性。 7. **文档**:可能包含需求文档、设计文档、...

    基于ssm+vue社区生鲜电商平台.zip

    该平台不仅支持网页版,还通过微信小程序扩展到移动端,为用户提供全方位的购物体验。 【描述】:这个项目的核心目标是打造一个现代化的社区生鲜电商平台,它涵盖了商品展示、用户注册登录、购物车管理、订单处理、...

    基于ssm+vue的水果网上商城.zip

    5. **构建脚本**:如pom.xml(Maven项目)或build.gradle(Gradle项目),用于构建和打包项目。 6. **README**:介绍项目背景、技术栈、部署指南等内容。 7. **测试代码**:JUnit或其他测试框架的测试类,用于验证...

    基于ssm+vue理发店会员管理系统.zip

    【标题】"基于ssm+vue理发店会员管理系统"是一个综合性的项目,它结合了Java后端技术SSM(Spring、SpringMVC、MyBatis)与...同时,由于涉及微信小程序,开发者还能了解到如何将线上服务拓展到移动平台,提升用户体验。

Global site tag (gtag.js) - Google Analytics