idea实现一键自动化部署项目

 更新时间:2026年01月15日 10:51:51   作者:智汇探长  
本文介绍了两种自动化部署Spring Boot项目的方法,第一种方法使用AlibabaCloudToolkit插件,包括安装插件、服务器配置和部署步骤,第二种方法涉及pom.xml配置、启动类编写、jar包部署和脚本配置,通过自动化部署,可以提高效率、减少错误和加快软件交付速度

前言

一键自动化部署项目是现代软件开发中的一种高效实践,它带来了许多显著的好处:

  • 提高效率:自动化部署可以节省手动部署所需的时间。特别是在频繁部署的情况下,自动化可以显著减少重复性工作,让开发人员有更多时间专注于编码和解决问题。
  • 减少错误:手动部署过程容易出错,尤其是在复杂的部署流程中。自动化部署可以减少人为错误,确保每次部署都是一致和可靠的。
  • 快速回滚:如果新部署的版本出现问题,自动化部署流程可以快速回滚到上一个稳定版本,减少系统不可用的时间。
  • 持续集成和持续部署(CI/CD):自动化部署是CI/CD流程的关键组成部分,它允许开发团队快速迭代和发布新功能,提高软件交付的速度和质量。
  • 标准化流程:自动化部署有助于标准化部署流程,确保所有团队成员都遵循相同的步骤和标准,这有助于维护代码和部署的一致性。

提示:文章一共介绍2种方式,下面案例可供参考

一、 IDEA插件安装

1. 首先下载 Alibaba Cloud Toolkit 插件

2. 插件下载完成后重启IDEA

二、SpringBoot项目准备

1. 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 https://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>2.7.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.test</groupId>
    <artifactId>demo-test</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>demo-test</name>
    <description>demo-test</description>

    <properties>
        <java.version>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>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2. controller

package com.test.controller;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("demo")
public class TestController {

    /**
     * 测试接口
     *
     * @param version 版本号
     * @return 版本号
     */
    @GetMapping("query")
    public String query(@RequestParam String version) {
        System.out.println("打印版本 = " + version);
        return version;
    }
}

3. 启动类

package com.test;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoTestApplication.class, args);
    }
}

三、SpringBoot项目jar包部署

1. Alibaba Cloud Toolkit 插件服务器配置

2. 主机 IP、用户名、密码 点击测试链接

3. 编辑项目配置

4. 选择 Deploy to Host

5. 指定Target Deploy Host 选择添加主机IP,勾选刚添加的服务器

6. 配置服务器jar包存放目录

7. 选择本地要上传的jar包

  • 注意⚠️ 这里一定要本地的绝对路径

8. 添加启动命令

9. 配置打包命令

clean package install -Dmaven.test.skip=true

到这里差不多就配置完了,简单测试一下

10. 测试



11. 部署脚本

服务器脚本位置

/opt/app/test/deploy/test.sh

test.sh

#!/bin/bash

# 定义程序路径和文件名的数组
declare -a APP_SERVER_PATHS=("/opt/app/test/")
declare -a APP_SERVERS=("demo-test-1.0.0-SNAPSHOT.jar")

# 停止并重启每个程序
for ((i = 0; i < ${#APP_SERVER_PATHS[@]}; i++)); do
  APP_SERVER_PATH=${APP_SERVER_PATHS[$i]}
  APP_SERVER=${APP_SERVERS[$i]}

  # 查找正在运行的Java进程的PID
  PID=$(ps aux | grep java | grep "$APP_SERVER" | grep -v grep | awk '{print $2}')

  if [ -z "$PID" ]; then
    echo "demo-test-1.0.0 server application $i is not running."
  else
    # 杀死进程
    echo "Stopping demo-test-1.0.0 server application $i (PID: $PID)..."
    kill $PID
    sleep 5
  fi
done

# 确保进程已停止后再启动程序
for ((i = 0; i < ${#APP_SERVER_PATHS[@]}; i++)); do
  APP_SERVER_PATH=${APP_SERVER_PATHS[$i]}
  APP_SERVER=${APP_SERVERS[$i]}

  # 启动程序
  echo "Starting demo-test-1.0.0 server application $i..."
  nohup java -Xms512m -Xmx1024m -Xmn256m -Xss256k -jar "${APP_SERVER_PATH}${APP_SERVER}" --spring.profiles.active=prod > /dev/null 2>&1 &

  echo "demo-test-1.0.0 server application $i restarted successfully."
done

修改IDEA 部署脚本

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot 应用程序启动时执行完整流程(最新推荐)

    Spring Boot 应用程序启动时执行完整流程(最新推荐)

    本文给大家介绍关于Spring Boot应用程序启动时main方法的完整执行流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-11-11
  • 关于mybatis-plus插件使用时的一些问题小结

    关于mybatis-plus插件使用时的一些问题小结

    这篇文章主要给大家介绍了关于mybatis-plus插件使用时的一些问题的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Java中的RabbitMQ使用场景和实践方法

    Java中的RabbitMQ使用场景和实践方法

    本文我们介绍RabbitMQ在Java应用中的使用,从基础概念到高级特性,从简单的点对点通信到复杂的事件驱动架构,RabbitMQ都能提供强大的支持,结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-09-09
  • java中List分页的几种方法介绍

    java中List分页的几种方法介绍

    大家好,本篇文章主要讲的是java中List分页的几种方法介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Java中集合遍历的方法示例代码展示

    Java中集合遍历的方法示例代码展示

    在 Java 编程中,集合(Collection)是用于存储和操作一组对象的重要工具,无论是数组、列表(List)、集合(Set),还是映射(Map),它们都提供了在不同场景下灵活使用的数据结构,这篇文章主要介绍了Java中集合遍历的方法示例代码展示,需要的朋友可以参考下
    2024-08-08
  • Java并发编程this逃逸问题总结

    Java并发编程this逃逸问题总结

    本篇文章给大家详细分析了Java并发编程this逃逸的问题分享,对此有需要的朋友参考下。
    2018-02-02
  • 解决常见的Eclipse SVN插件报错方法详解

    解决常见的Eclipse SVN插件报错方法详解

    本篇文章是对常见的Eclipse SVN插件报错方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 使用quartz时,传入参数到job中的使用记录

    使用quartz时,传入参数到job中的使用记录

    这篇文章主要介绍了使用quartz时,传入参数到job中的使用记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • spring注解 @PropertySource配置数据源全流程

    spring注解 @PropertySource配置数据源全流程

    这篇文章主要介绍了spring注解 @PropertySource配置数据源全流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Springboot集成Quartz实现定时任务代码实例

    Springboot集成Quartz实现定时任务代码实例

    这篇文章主要介绍了Springboot集成Quartz实现定时任务代码实例,任务是有可能并发执行的,若Scheduler直接使用Job,就会存在对同一个Job实例并发访问的问题,而JobDetail & Job方式,Scheduler都会根据JobDetail创建一个新的Job实例,这样就可以规避并发访问问题
    2023-09-09

最新评论