亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Maven管理SpringBoot Profile詳解

發布時間:2020-09-21 07:40:10 來源:腳本之家 閱讀:415 作者:chadLi 欄目:編程語言

1. Spring Profile

Spring可使用Profile絕對程序在不同環境下執行情況,包含配置、加載Bean、依賴等。

Spring的Profile一般項目包含:dev(開發), test(單元測試), qa(集成測試), prod(生產環境)。由spring.profiles.active屬性絕定啟用的profile。

SpringBoot的配置文件默認為 application.properties(或yaml,此外僅心properties配置為說明)。不同Profile下的配置文件由application-{profile}.properties管理,同時獨立的 Profile配置文件會覆蓋默認文件下的屬性。

2. Maven Profile

Maven同樣也有Profile設置,可在構建過程中針對不同的Profile環境執行不同的操作,包含配置、依賴、行為等。

Maven的Profile由 pom.xml 的<Profiles>標簽管理。每個Profile中可設置:id(唯一標識), properties(配置屬性), activation(自動觸發的邏輯條件), dependencies(依賴)等。

此文章不對Spring和Maven的Profile作過多說明,詳細情況請自行查閱。

3. Maven 管理 Spring Profile

由于構建是基于Maven(或Gradle,此處僅以Maven說明)。所以使用Maven管理Spring構建時的Profile是非常方便的。

Maven管理Spring Profile分五步,以下詳細介紹。

3.1 去掉默認的 Tomcat依賴

在SpringBoot MVC項目中,默認以內嵌Tomcat運行,如果需要特殊的設置或者使用Undertow,需要去掉默認的Tomcat依賴:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </exclusion>
  </exclusions>
</dependency>

如果你同時使用了 MyBatis,需要去掉tomcat-jdbc依賴:

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-jdbc</artifactId>
    </exclusion>
  </exclusions>
</dependency>

3.2 Maven Profile設置

在項目(如果有模塊為具體模塊)的pom.xml下設置:

<!-- Maven控制Spring Profile -->
<profiles>
  <profile>
    <id>dev</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <profileActive>dev</profileActive>
    </properties>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jdbc</artifactId>
      </dependency>
    </dependencies>
  </profile>
  <profile>
    <id>prod</id>
    <properties>
      <profileActive>prod</profileActive>
    </properties>
  </profile>
</profiles>

從上面的配置可以看出,Maven的Profile配置了兩個:dev和prod,并且在dev中使用了內嵌Tomcat,而 prod 中沒有,所以這兩個Profile打包的文件dev可以直接運行(Plugin使用了SpringBoot Plugin),而prod并不能直接運行(或部署在外部Tomcat下,并不推薦這樣,后面會說明)。

properties中的profileActive是我們申明的屬性,此處對應Spring的Profile值。

3.3 Maven資源過濾

SpringBoot的 Profile選擇需要在 application.properties中配置,如果定死在文件,那么每次打包都需要手動修改,很麻煩,而且容易出錯。

Maven的資源過濾功能可以實現在構建時修改以“@xxx@”表示的屬性。資源過濾需要在pom.xml的<build>標簽下配置 resources:

<!-- profile對資源的操作 -->
<resources>
  <resource>
    <directory>src/main/resources</directory>
    <excludes>
      <exclude>application*.properties</exclude>
    </excludes>
  </resource>
  <resource>
    <directory>src/main/resources</directory>
    <!-- 是否替換@xx@表示的maven properties屬性值 -->
    <filtering>true</filtering>
    <includes>
      <include>application.properties</include>
      <include>application-${profileActive}.properties</include>
    </includes>
  </resource>
</resources>

上面的第一個resource去掉了src/main/resources下的所有application.properties文件,“”是通配符,表示此處有任何內容(沒有也可以)都匹配。

第二個resource添加了application.properties默認配置文件和由profileActive屬性決定的相應profile配置文件。并且filtering為true表示,會將文件內容的“@xx@”替換為相應的變量(如文件中的@profileActive@會替換為profileActive屬性值)。

3.4 Spring配置Profile

在application.properties默認配置文件中配置:

spring.profiles.active = @profileActive@

@profileActive@表示該屬性值會在maven構建時被替換掉。

3.5 構建

構建命令:

mvn clean package -Pdev

上面的命令會根據Maven Profile的 dev構建環境包,如果需要prod包,則把-P的參數替換成prod即可。

為了方便我會在每個項目下生成一個build.sh文件,內容如下:

#!/bin/bash
profileActive=prod
if [ -n "$1" ]; then
  profileActive=$1
fi
mvn clean package -Dmaven.test.skip=true -P$profileActive

該腳本接收一個參數,即打包對應的Profile。默認情況下如果不帶參數,會打包prod環境包。

需要注意的是,該命令跳過了測試。

4. 總結

完成了上面的五步,即可使項目根據你的構建參數的不同,打包出不同環境下運行的包。

第1步去掉了SpringBoot內嵌的tomcat和tomcat-jdbc。使得我們可以決定在什么情況下使用何種容器運行我們的項目。
第2步配置了Maven構建Porfile,使得構建可根據我們的指令分發不同的包。
第3步配置了Maven資源過濾,不僅使得不同Profile下的資源文件互不可見,且替換了資源文件中以“@xx@”表示的屬性值。
第4步使Spring的Profile由Maven決策,這樣,我們就不用每次打包都修改Spring的Profile配置了。
第5步展示了如何執行不同Profile下的構建命令,并且使用了一個Shell腳本方便我們執行構建和跳過測試(多數時候我們在構建項目時先測試,并不需要在構建時測試,測試和構建的解耦使得我們更專注。但同時,如果你忘記了前置測試,也可能會引發未察覺的測試問題)。

以上就是本文關于Maven管理SpringBoot Profile詳解的全部內容,希望對大家有所幫助。歡迎參閱:maven學習-初窺門徑使用maven運行Java Main的三種方法解析等,有什么問題可以留言,歡迎大家交流討論。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大余县| 绩溪县| 巩留县| 临安市| 廊坊市| 安龙县| 多伦县| 武胜县| 娄烦县| 龙门县| 民勤县| 黄浦区| 高密市| 酒泉市| 留坝县| 达尔| 定西市| 鄯善县| 海原县| 贞丰县| 凤冈县| 比如县| 廉江市| 济南市| 泰来县| 博客| 吉首市| 庐江县| 盐池县| 清丰县| 乌鲁木齐县| 安塞县| 兰溪市| 阳朔县| 库尔勒市| 兴国县| 岑溪市| 莎车县| 综艺| 平定县| 通榆县|