idea一键自动化部署项目

文章目录

  • 前言
  • [一、 IDEA插件安装](#一、 IDEA插件安装)
    • [1. 首先下载 Alibaba Cloud Toolkit 插件](#1. 首先下载 Alibaba Cloud Toolkit 插件)
    • [2. 插件下载完成后重启IDEA](#2. 插件下载完成后重启IDEA)
  • 二、SpringBoot项目准备
    • [1. pom.xml 文件](#1. pom.xml 文件)
    • [2. controller](#2. controller)
    • [3. 启动类](#3. 启动类)
  • 三、SpringBoot项目jar包部署
    • [1. Alibaba Cloud Toolkit 插件服务器配置](#1. Alibaba Cloud Toolkit 插件服务器配置)
    • [2. 主机 IP、用户名、密码 点击测试链接](#2. 主机 IP、用户名、密码 点击测试链接)
    • [3. 编辑项目配置](#3. 编辑项目配置)
    • [4. 选择 Deploy to Host](#4. 选择 Deploy to Host)
    • [5. 指定Target Deploy Host 选择添加主机IP,勾选刚添加的服务器](#5. 指定Target Deploy Host 选择添加主机IP,勾选刚添加的服务器)
    • [6. 配置服务器jar包存放目录](#6. 配置服务器jar包存放目录)
    • [7. 选择本地要上传的jar包](#7. 选择本地要上传的jar包)
    • [8. 添加启动命令](#8. 添加启动命令)
    • [9. 配置打包命令](#9. 配置打包命令)
    • [10. 测试](#10. 测试)
    • [11. 部署脚本](#11. 部署脚本)

前言

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

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

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

一、 IDEA插件安装

1. 首先下载 Alibaba Cloud Toolkit 插件

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

二、SpringBoot项目准备

1. pom.xml 文件

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

java 复制代码
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. 启动类

java 复制代码
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. 配置打包命令

bash 复制代码
clean package install -Dmaven.test.skip=true

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

10. 测试



11. 部署脚本

  1. 服务器脚本位置
java 复制代码
/opt/app/test/deploy/test.sh
  1. test.sh
bash 复制代码
#!/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
  1. 修改IDEA 部署脚本
相关推荐
探索java12 分钟前
Java并发编程中的StampedLock详解:原理、实践与性能优化
java·stampedlock
界面开发小八哥24 分钟前
「Java EE开发指南」如何用MyEclipse将Java项目转换为Web项目?
java·ide·java-ee·eclipse·开发工具·myeclipse
pobu16834 分钟前
aksk前端签名实现
java·前端·javascript
一个天蝎座 白勺 程序猿1 小时前
飞算JavaAI进阶:重塑Java开发范式的AI革命
java·开发语言·人工智能
代码的余温1 小时前
Spring Boot集成Logback日志全攻略
xml·spring boot·logback
前端 贾公子1 小时前
tailwindCSS === 使用插件自动类名排序
java·开发语言
没有bug.的程序员1 小时前
JAVA面试宝典 -《Spring Boot 自动配置魔法解密》
java·spring boot·面试
William一直在路上1 小时前
SpringBoot 拦截器和过滤器的区别
hive·spring boot·后端
hnlucky2 小时前
《Nginx + 双Tomcat实战:域名解析、静态服务与反向代理、负载均衡全指南》
java·linux·服务器·前端·nginx·tomcat·web