最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot + Maven 多環(huán)境打包實(shí)現(xiàn)方法

 更新時(shí)間:2025年12月16日 16:51:19   作者:zyyn_未來可期  
本文介紹如何在SpringBoot項(xiàng)目中實(shí)現(xiàn)不同環(huán)境的配置切換及Maven多環(huán)境打包的方法,包括配置文件的選擇與加載機(jī)制,以及如何通過POM文件進(jìn)行多環(huán)境打包,感興趣的朋友跟隨小編一起看看吧

各位家人,本次我們介紹一下SpringBoot + Maven 的項(xiàng)目在不同的環(huán)境下的配置,以及不同環(huán)境下的打包。

做為開發(fā),大家在日常的工作當(dāng)中肯定都有環(huán)境的切換操作,這些也都是我們開發(fā)的一些常規(guī)操作了,畢竟在開發(fā),測試,生產(chǎn)的時(shí)候大概率用的環(huán)境都不一樣(包括數(shù)據(jù)庫,redis等等)。

?? 一、多環(huán)境切換

多的不說,直接扔幾個(gè)yml配置文件,想必大家都眼熟

這三個(gè)文件中:

  • application.yml 是啟動(dòng)服務(wù)時(shí),Spring會(huì)自動(dòng)加載的配置文件
  • application-dev.yml 代表的是開發(fā)環(huán)境時(shí)的配置文件
  • application-pro.yml 代表的是生產(chǎn)環(huán)境的配置文件

但是請大家注意:
后面這兩個(gè)文件在SpringBoot服務(wù)啟動(dòng)時(shí),Spring并不會(huì)自動(dòng)加載他們,想讓他們加載還需要我們在application.yml 中添加一些配置如下所示。

application.yml:

spring:
  profiles:
#    active: @activatedEnv@
    # 此時(shí)加載dev開發(fā)環(huán)境
    active: dev
    # 此時(shí)加載pro生產(chǎn)環(huán)境
#    active: pro

對應(yīng)關(guān)系如下圖所示:

在服務(wù)啟動(dòng)加載的時(shí)候,服務(wù)器就會(huì)加載application.yml文件,然后通過配置去調(diào)用application-dev.yml文件,選擇開發(fā)環(huán)境。當(dāng)然如此,當(dāng)active:prod,那么服務(wù)在啟動(dòng)時(shí),Spring就會(huì)調(diào)用application-prod.yml文件進(jìn)入生產(chǎn)環(huán)境。

?? 二、Maven 多環(huán)境打包

上面我們已經(jīng)介紹了各個(gè)環(huán)境直接的切換,但是想要完成多環(huán)境的打包還需要再pom中添加對應(yīng)的依賴

pom.xml:

<!--多環(huán)境打包-->
    <profiles>
        <!--開發(fā)-->
        <profile>
            <id>dev</id>
            <properties>
                <!-- 環(huán)境標(biāo)識,需要與配置文件的名稱相對應(yīng) -->
                <activatedEnv>dev</activatedEnv>
            </properties>
            <activation>
                <!-- 默認(rèn)環(huán)境 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!--生產(chǎn)-->
        <profile>
            <id>pro</id>
            <properties>
                <activatedEnv>pro</activatedEnv>
            </properties>
        </profile>
    </profiles>
    <!-- 構(gòu)建項(xiàng)目需要的信息 -->
    <build>
        <!--最終 Jar 包的名字-->
        <finalName>Jesus-${activatedEnv}</finalName>
        <!--Maven的打包插件-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 作為DOM對象的配置 -->
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <!-- resource插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>test-resources</id>
                        <!--目標(biāo)執(zhí)行的階段,具體值看Maven的生命周期列表;-->
                        <phase>compile</phase>
                        <!--一個(gè)plugin的execution的目標(biāo)列表,也就是上面的id-->
                        <goals>
                            <goal>testResources</goal>
                        </goals>
                        <configuration>
                            <!-- 覆蓋原有文件 -->
                            <overwrite>true</overwrite>
                            <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                            <!-- 待處理的資源定義 -->
                            <resources>
                                <resource>
                                    <!-- 指定resources插件處理哪個(gè)目錄下的資源文件 -->
                                    <directory>src/main/resources/${activatedEnv}</directory>
                                    <filtering>false</filtering>
                                </resource>
                            </resources>
                        </configuration>
                        <!--這個(gè)plugin是否應(yīng)用到該P(yáng)OM的孩子POM,默認(rèn)true;-->
                        <inherited>false</inherited>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

大家可以根據(jù)需要去修改上面的配置信息。

然后在我們的 application.yml 配置動(dòng)態(tài)的使用即可:active: @activatedEnv@

這里的 @activatedEnv@ ,使用的就是我們在pom.xml里設(shè)置的 <activatedEnv>

最后在Maven打包時(shí),我們只需要指定參數(shù)就好了

// 開發(fā)
mvn clean package -P dev
// 生產(chǎn)
mvn clean package -P prod

?? 三、擴(kuò)展

如果你的項(xiàng)目要打很多很多的包,同時(shí)又在多個(gè)地方使用,每個(gè)地方環(huán)境都不一樣,改怎么辦呢? 這樣一個(gè)個(gè)的搞豈不是要了老命。

這里只提供一個(gè)思路,有需要的家人可以看看,并不是最好的解決方案,不喜勿噴!

1、在你的項(xiàng)目中新建一個(gè)文件夾config,用來保存你的配置文件

2、修改pom文件,在里面添加你需要的環(huán)境配置,我這里是根據(jù)不同的城市來切換環(huán)境

3、同樣的編寫你需要的build

4、指定你配置文件的路徑,讓maven打包的時(shí)候去對應(yīng)的地方拿對應(yīng)的配置文件:

5、編寫一大堆腳本文件,用于打包

6、再編寫一個(gè)腳本,去運(yùn)行這些腳本,并且把打好的jar包拿到指定地點(diǎn)

MvnBuildAll-EapStdAll-js-test.bat:

@echo off
chcp 936
:INPUT
echo  ===================命令列表=======================  
echo  命令編號: 1    語意:執(zhí)行打包文件本機(jī)倉庫安裝 -install
echo  命令編號: 9    語意:退出控制臺  -quit
echo  ===================命令列表=======================
echo 請輸入你要選擇的命令:  
set /p cmd= 
IF %cmd% == 1 GOTO INSTALL  
IF %cmd% == 9 GOTO END  
:INSTALL
echo  ===================mvnbulid-gcc.bat=======================
call D:
call cd D:\workspace\code\eap-std\eap-std-webapp\buildzjtest
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-gcc.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-gcc-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-baseservice.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-baseservice.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-baseservice-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-platform.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-platform.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-platform-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-manage.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-manage.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-manage-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-tcservice.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-tcservice.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-tcservice-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-scm.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-scm.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-scm-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-cas.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-cas.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-cas-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-userconsole.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-userconsole.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-userconsole-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-analysis.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-analysis.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-analysis-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-mqlis.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-mqlis.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-mqlis-js-test.war D:\workspace\maven_jar\zjtest
echo  ============================  next continue  ============================
echo  ===================mvnbulid-dep.bat=======================
call D:\workspace\code\eap-std\eap-std-webapp\buildzjtest\mvnbulid-dep.bat
echo  ===================copy war to build-new-war =======================
call copy D:\workspace\code\eap-std\eap-std-webapp\target\eap-std-dep-js-test.war D:\workspace\maven_jar\zjtest
echo  ===================執(zhí)行完畢=======================
:END
echo  ===================按任意鍵退出=======================
@pause 

最后你只需要運(yùn)行這個(gè)bat文件等著就行了。

如果你們是用Jenkins 等自動(dòng)化部署,請一定要忽略這古老的方式。切記!切記??!切記!??!

到此這篇關(guān)于SpringBoot + Maven 多環(huán)境打包實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)SpringBoot Maven 多環(huán)境打包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot接入華為云短信SDK的流程步驟

    SpringBoot接入華為云短信SDK的流程步驟

    這篇文章主要介紹了華為云短信服務(wù)的主要特點(diǎn)和使用步驟,包括開通服務(wù)、控制臺配置和SpringBoot項(xiàng)目集成,需要的朋友可以參考下
    2026-01-01
  • Java多線程實(shí)現(xiàn)的兩種方式

    Java多線程實(shí)現(xiàn)的兩種方式

    本文主要介紹了Java多線程實(shí)現(xiàn)的兩種方式:繼承Thread類、實(shí)現(xiàn)Runnable接口。具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • 談?wù)凷pring AOP中@Aspect的高級用法示例

    談?wù)凷pring AOP中@Aspect的高級用法示例

    在Spring AOP中目前只有執(zhí)行方法這一個(gè)連接點(diǎn),下面這篇文章主要給大家介紹了關(guān)于Spring AOP中@Aspect的高級用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 最新版IDEA配置 Tomcat的詳細(xì)過程

    最新版IDEA配置 Tomcat的詳細(xì)過程

    本文介紹如何在IDEA中配置Tomcat服務(wù)器,并創(chuàng)建Web項(xiàng)目,首先檢查Tomcat是否安裝完成,然后在IDEA中創(chuàng)建Web項(xiàng)目并添加Web結(jié)構(gòu),接著,配置編譯輸出路徑和依賴,將Tomcat的jar包復(fù)制到項(xiàng)目中,最后,配置Tomcat服務(wù)器并運(yùn)行項(xiàng)目,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-01-01
  • MyBatis中#{}和${}的區(qū)別詳解

    MyBatis中#{}和${}的區(qū)別詳解

    mybatis和ibatis總體來講都差不多的。下面小編給大家探討下mybatis中#{}和${}的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • Java使用Canal同步MySQL數(shù)據(jù)到Redis

    Java使用Canal同步MySQL數(shù)據(jù)到Redis

    在現(xiàn)代微服務(wù)架構(gòu)中,數(shù)據(jù)同步是一個(gè)常見的需求,特別是將?MySQL?數(shù)據(jù)實(shí)時(shí)同步到?Redis,下面我們就來看看Java如何使用Canal同步MySQL數(shù)據(jù)到Redis吧
    2024-11-11
  • Springboot視頻接口報(bào)大量的ClientAbortException找不到原因的解決

    Springboot視頻接口報(bào)大量的ClientAbortException找不到原因的解決

    本文主要介紹了Springboot視頻接口報(bào)大量的ClientAbortException找不到原因的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 詳解Mybatis中javaType和ofType的區(qū)別

    詳解Mybatis中javaType和ofType的區(qū)別

    本文主要介紹了詳解Mybatis中javaType和ofType的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • java 通過反射遍歷所有字段修改值的實(shí)例代碼

    java 通過反射遍歷所有字段修改值的實(shí)例代碼

    這篇文章主要介紹了java 通過反射遍歷所有字段修改值,通過java 的反射,遍歷所有字段,進(jìn)行一個(gè)判斷,取出來的值是帶有圖片鏈接的,進(jìn)行操作,省去了很多代碼,理解也很容易,下面跟隨小編看下實(shí)例代碼吧
    2021-05-05
  • springboot 如何禁用某項(xiàng)健康檢查

    springboot 如何禁用某項(xiàng)健康檢查

    這篇文章主要介紹了springboot 如何禁用某項(xiàng)健康檢查的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

清流县| 岐山县| 嘉祥县| 丹寨县| 准格尔旗| 平南县| 兴山县| 洛浦县| 班玛县| 鄢陵县| 叶城县| 荣成市| 东光县| 西丰县| 舞阳县| 北碚区| 临猗县| 南京市| 雷州市| 泰来县| 霍山县| 阿瓦提县| 宜丰县| 永修县| 三门峡市| 高尔夫| 龙江县| 天等县| 万年县| 滨海县| 广汉市| 台湾省| 麻栗坡县| 娱乐| 锡林浩特市| 东乡族自治县| 寻乌县| 弥勒县| 黑龙江省| 新兴县| 永安市|