成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一鍵搞定!為 Spring Boot 服務配置通用腳本,提升運維效率

開發 前端
在實際開發中,我們可以根據具體業務需求,進一步擴展 bin 目錄下的腳本,例如添加日志管理、自動重啟等功能,使 Spring Boot 項目更加高效、易用。

在日常開發和運維工作中,我們常常會接觸到各種優秀的開源 Java 項目,如 Kafka、Flink、RocketMQ、StreamPark 等。這些項目在服務部署時,通常都會在根目錄下提供 bin 目錄用于存放啟動和關閉腳本,以及 conf 目錄用于管理配置文件。這種目錄結構不僅方便了運維管理,也極大提升了服務的可維護性和靈活性。

然而,當我們使用 Spring Boot 框架開發服務時,默認的項目結構并不會包含 bin 和 conf 目錄,而是將所有配置文件打包到 jar 內部。這種方式雖然簡化了項目的構建流程,但也帶來了不便:

  1. 運維管理不便每次修改配置都需要重新打包并部署,導致運維成本上升。
  2. 缺乏標準化無法像其他開源項目一樣,直接通過腳本進行服務的啟動、停止等管理操作。
  3. 不利于配置靈活性所有配置都在 jar 內部,手動修改較為困難,無法在不同環境間快速切換。

針對這些問題,我們可以通過 maven-assembly-plugin 插件為 Spring Boot 3.4 項目引入 bin和 conf 目錄,從而實現與優秀開源項目類似的部署管理方式,提高運維效率。本文將詳細介紹如何在 Spring Boot 項目中實現這一方案。

Spring Boot 目錄優化

在 Spring Boot 項目中,應用的配置文件通常會被打包到 JAR 內部,這導致修改配置文件時需要重新構建項目或依賴配置中心。然而,在某些情況下,我們更希望像傳統 Java Web 應用一樣,直接修改外部的 conf 配置文件,從而減少運維成本。

為此,我們可以采取以下措施:

  1. 在項目根目錄下創建 distribution 子模塊。
  2. 配置 maven-assembly-plugin 插件,實現服務的完整打包。
  3. 在 distribution 目錄下創建 bin 目錄,存放啟動和停止腳本。
  4. 在 distribution 目錄下創建 conf 目錄,存放外部配置文件。

Maven 配置

創建 distribution 子模塊

首先,在 pom.xml 文件中添加 distribution 子模塊,并引入 maven-assembly-plugin 插件。

<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">
    <parent>
        <groupId>com.icoderoad</groupId>
        <artifactId>springboot-service</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>service-distribution</artifactId>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>assembly.xml</descriptor>
                    </descriptors>
                    <tarLongFileMode>posix</tarLongFileMode>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>install</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

assembly.xml 配置

在 distribution 目錄下創建 assembly.xml,定義 bin 和 conf 目錄的打包規則。

<assembly>
    <id>${project.version}</id>
    <includeBaseDirectory>true</includeBaseDirectory>
    <formats>
        <format>dir</format>
        <format>tar.gz</format>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <includes>
                <include>conf/**</include>
            </includes>
        </fileSet>
        <fileSet>
            <includes>
                <include>bin/*</include>
            </includes>
            <fileMode>0755</fileMode>
        </fileSet>
    </fileSets>
</assembly>

bin 目錄與腳本

在 distribution 目錄下創建 bin 目錄,并添加以下四個腳本文件:

  • shutdown.cmd
  • shutdown.sh
  • startup.cmd
  • startup.sh

shutdown.sh(Linux/macOS)

#!/bin/bash
cd`dirname $0`/../target
target_dir=`pwd`
pid=`ps ax | grep -i 'springboot-service' | grep ${target_dir} | grep java | grep -v grep | awk '{print $1}'`
if[-z"$pid"];then
    echo"No running springboot-service found."
    exit -1;
fi
echo"Stopping springboot-service (PID: ${pid})..."
kill${pid}
echo"Shutdown completed."

startup.sh(Linux/macOS)

#!/bin/bash
cd `dirname $0`/../target
java -jar springboot-service.jar > /dev/null 2>&1 &
echo "Spring Boot service started!"

shutdown.cmd(Windows)

@echo off
setlocal
echo Stopping springboot-service...
taskkill /F /IM java.exe

startup.cmd(Windows)

@echo off
setlocal
echo Starting springboot-service...
start java -jar springboot-service.jar

結論

通過本文的方法,我們可以輕松為 Spring Boot 3.4 項目添加 bin 目錄和 conf 目錄,實現標準化的運維管理。主要優勢包括:

  • 提升運維效率通過腳本一鍵啟動、停止服務,無需手動輸入繁瑣的命令。
  • 增強配置靈活性支持外部 conf 目錄存放配置文件,避免每次修改配置都要重新打包。
  • 提高可維護性項目結構更清晰,符合主流開源項目的標準,方便團隊協作與維護。

在實際開發中,我們可以根據具體業務需求,進一步擴展 bin 目錄下的腳本,例如添加日志管理、自動重啟等功能,使 Spring Boot 項目更加高效、易用。如果你希望你的 Spring Boot 項目像 Kafka、RocketMQ 一樣具備高效的運維能力,不妨嘗試本文介紹的方案!

責任編輯:武曉燕 來源: 路條編程
相關推薦

2024-12-30 09:24:19

運維監控插件

2021-04-23 10:38:52

Spring BootSpringMVC源碼

2014-12-16 08:45:30

華為IT運維

2020-03-31 15:03:56

Spring Boot代碼Java

2025-04-17 04:00:00

2020-07-23 15:32:25

智能標注

2013-09-27 17:06:01

RIIL綜合運維廣西大學

2017-02-27 17:51:31

戴爾

2015-11-03 15:29:49

ONOS開放網絡操作系統SDN

2025-02-17 07:48:45

2025-03-07 10:50:59

腳本SSH信任服務器

2025-03-05 09:20:00

Shell腳本Linux

2025-04-02 09:10:00

LinuxShell腳本

2022-06-23 08:42:08

配置加密解密

2025-01-03 10:44:12

Linux

2022-10-20 17:37:46

運維智能管理平臺

2009-06-08 15:36:21

運維管理自助服務摩卡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 依人成人 | 爱高潮www亚洲精品 中文字幕免费视频 | 久草中文在线观看 | 国产精品久久国产精品久久 | 一区二区三区高清 | 中文字幕免费中文 | 亚洲精品久久久蜜桃网站 | 久久久福利 | 日韩小视频| 亚洲成av人影片在线观看 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 亚洲精品国产综合区久久久久久久 | 伊人成人免费视频 | 国产精品欧美一区二区三区 | 综合久久99 | 色爱综合网 | 国产日韩一区二区 | 亚洲精品永久免费 | 久久一区二区精品 | 日韩精品久久 | 国产成人免费视频网站高清观看视频 | 一区二区三区小视频 | 久久国产成人午夜av影院武则天 | 国产精品日韩欧美一区二区 | 色橹橹欧美在线观看视频高清 | 欧美精品一区二区三区蜜臀 | 手机av免费在线 | 在线一区 | 欧美性网 | 久国产视频 | 欧美精品一区二区蜜桃 | 中午字幕在线观看 | 久久久精品一区 | 日韩国产中文字幕 | 午夜电影网站 | 狠狠爱综合 | 精品国产一二三区 | 久久久久久久久久久久久九 | 欧洲av在线 | 亚洲网站在线 | 中文字幕高清 |