自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一鍵搞定!為 Spring Boot 服務(wù)配置通用腳本,提升運(yùn)維效率

開發(fā) 前端
在實(shí)際開發(fā)中,我們可以根據(jù)具體業(yè)務(wù)需求,進(jìn)一步擴(kuò)展 bin 目錄下的腳本,例如添加日志管理、自動重啟等功能,使 Spring Boot 項(xiàng)目更加高效、易用。

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

然而,當(dāng)我們使用 Spring Boot 框架開發(fā)服務(wù)時(shí),默認(rèn)的項(xiàng)目結(jié)構(gòu)并不會包含 bin 和 conf 目錄,而是將所有配置文件打包到 jar 內(nèi)部。這種方式雖然簡化了項(xiàng)目的構(gòu)建流程,但也帶來了不便:

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

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

Spring Boot 目錄優(yōu)化

在 Spring Boot 項(xiàng)目中,應(yīng)用的配置文件通常會被打包到 JAR 內(nèi)部,這導(dǎo)致修改配置文件時(shí)需要重新構(gòu)建項(xiàng)目或依賴配置中心。然而,在某些情況下,我們更希望像傳統(tǒng) Java Web 應(yīng)用一樣,直接修改外部的 conf 配置文件,從而減少運(yùn)維成本。

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

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

Maven 配置

創(chuàng)建 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 目錄下創(chuàng)建 assembly.xml,定義 bin 和 conf 目錄的打包規(guī)則。

<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 目錄下創(chuàng)建 bin 目錄,并添加以下四個(gè)腳本文件:

  • 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

結(jié)論

通過本文的方法,我們可以輕松為 Spring Boot 3.4 項(xiàng)目添加 bin 目錄和 conf 目錄,實(shí)現(xiàn)標(biāo)準(zhǔn)化的運(yùn)維管理。主要優(yōu)勢包括:

  • 提升運(yùn)維效率通過腳本一鍵啟動、停止服務(wù),無需手動輸入繁瑣的命令。
  • 增強(qiáng)配置靈活性支持外部 conf 目錄存放配置文件,避免每次修改配置都要重新打包。
  • 提高可維護(hù)性項(xiàng)目結(jié)構(gòu)更清晰,符合主流開源項(xiàng)目的標(biāo)準(zhǔn),方便團(tuán)隊(duì)協(xié)作與維護(hù)。

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

責(zé)任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2024-12-30 09:24:19

運(yùn)維監(jiān)控插件

2021-04-23 10:38:52

Spring BootSpringMVC源碼

2020-03-31 15:03:56

Spring Boot代碼Java

2025-04-17 04:00:00

2014-12-16 08:45:30

華為IT運(yùn)維

2020-07-23 15:32:25

智能標(biāo)注

2013-09-27 17:06:01

RIIL綜合運(yùn)維廣西大學(xué)

2025-02-17 07:48:45

2015-11-03 15:29:49

ONOS開放網(wǎng)絡(luò)操作系統(tǒng)SDN

2025-03-07 10:50:59

腳本SSH信任服務(wù)器

2017-02-27 17:51:31

戴爾

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

2009-06-08 15:36:21

運(yùn)維管理自助服務(wù)摩卡

2015-03-09 11:10:14

運(yùn)維

2009-10-15 21:01:43

網(wǎng)絡(luò)運(yùn)維管理統(tǒng)一管理平臺華為
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號