1. 程式人生 > >SpringBoot線上部署踩坑

SpringBoot線上部署踩坑

SpringBOOT專案在線上部署時,要麼在命令列裡新增–spring.profiles.active=prod來指定環境,要麼通過maven 打包時動態傳參啟用–spring.profiles.active=prod,之前對於SpringBOOT的專案部署都是採用命令列方式啟用環境分支,現專案整合部署環境,採用的maven -p方式啟用環境分支,需將啟用的分支變數傳遞給
spring.profiles.active=prod

plugin指定maven打包時需要取得引數,根據引數來設定打包的環境的配置檔案
另外需要建一個application.yml檔案指定啟動檔案環境
application.yml方式配置如下:

spring:
  profiles:
    active: @profileActive@
<profiles>
        <profile>
            <id>product</id>
            <properties>
                <profileActive>prod</profileActive>
            </properties>
        </profile>
    </profiles>
<build> <resources> <resource> <!-- 配置需要被替換的資原始檔路徑, properties 應該在 src/main/resource 目錄下 --> <directory>src/main/resources</directory> <excludes> <exclude>static/**</exclude> </excludes
>
<filtering>true</filtering> <!-- 是否使用過濾器 --> </resource> </resources> </build>

傳統的maven 專案在對配置檔案中進行佔位符替換時,如下開啟對某個目錄下的檔案過濾替換就行,配置檔案中佔位符為${…},但是在SpringBOOT專案中,配置檔案要想從maven中獲取環境變數,佔位符得是@…@

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
13.2 Maven 
Maven users can inherit from the spring-boot-starter-parent project to obtain sensible defaults. The parent project provides the following features:

Java 1.6 as the default compiler level. 
UTF-8 source encoding. 
A Dependency Management section, allowing you to omit tags for common dependencies, inherited from the spring-boot-dependencies POM. 
Sensible resource filtering. 
Sensible plugin configuration (exec plugin, surefire, Git commit ID, shade). 
Sensible resource filtering for application.properties and application.yml including profile-specific files (e.g. application-foo.properties and application-foo.yml) 
On the last point: since the default config files accept Spring style placeholders (${…​}) the Maven filtering is changed to use @[email protected] placeholders (you can override that with a Maven property resource.delimiter).

大致的意思是我的maven繼承了spring-boot-starter-parent,並且spring預設配置檔案接受的佔位符也是…,所以mavenfilter{}佔位符就被spring的maven pom替換掉了,變成了@[email protected],我們可以通過resource.delimiter來覆蓋它。
看下spring-boot-starter-parent 這個pom裡寫這一段

<properties>
        <java.version>1.6</java.version>
        <resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>

總結:所以Springboot 專案在啟動時要麼採用命令列方式啟用,也可以採用mavan 打包傳遞引數啟用,更多啟用方式可以檢視SpringBOOT的配置優先順序可以參考 SpringBoot系列(三)內建配置及自定義配置

相關推薦

SpringBoot線上部署

SpringBOOT專案在線上部署時,要麼在命令列裡新增–spring.profiles.active=prod來指定環境,要麼通過maven 打包時動態傳參啟用–spring.profiles.active=prod,之前對於SpringBOOT的專案部

github webhook 實現代碼自動部署 !!

添加 sudoers lin http 必須 ebs spa 踩坑 bsp 踩坑:   1、php程序執行linux命令是以webserver的user用戶(如apache 、www……)操作的,需要在/etc/sudoers添加用戶免密碼操作權限;   2、以we

SpringBoot + Elasticsearch之記錄

spring boot 1.x支援elasticsearch <5.x elasticsearch安裝:按官網安裝步驟: (1)curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticse

Mac系統STF自動化部署記錄

com div safe github ont 使用 src ash gic 因為公司需要尋找一個免root的自動化測試方案,所以以前做的老方案需要被替代。一陣搜尋找到了這個框架,但是部署起來很是折騰,搞了一下午終於搞定,順便記錄一下過程,有需要的自取。 環境搭建

SpringBoot整合mybatis

img invalid clas png XML map 自己 分享圖片 運行  springboot整合mybaits過程中,調用接口時報錯:org.apache.ibatis.binding.BindingException: Invalid bound stateme

經歷】一次Asp.NET小網站部署和解決經歷

  2013年給1個大學的小客戶部署過一個小型的Asp.NET網站,非常小,用的sqlite資料庫,今年人家說要換臺伺服器,要重新部署一下,好吧,雖然早就過了服務時間,但無奈誰叫人家是客戶了,二話不說,上,原始碼和以前的檔案都有,部署還不是分分鐘的事情,開啟IIS掛上去就行了。誰知道,這個部署將近花了2天的時

ABP中服務介面Web.Host部署

部署ABP.Web.Host後報如下錯誤: 後來解決方案是因為伺服器沒有安裝.netframe4.6. 去官網下載了。NDP472-KB4054531-Web.exe 更新了.netframe4.7.2.問題解決了。

airflow分散式部署記錄之安裝篇

前言 airflow是一款基於python的開源任務流排程系統,但是關於airflow的安裝教程比較匱乏。本人在親自安裝的過程中遇到了很多奇葩的問題,期間也參考了網上的各種資料,在此做下記錄,以備不時之需。 系統環境 作業系統 Centos6.5

Windows HBase2.2.0安裝部署

下載安裝 hbase下載 解壓之後根目錄,沒有什麼要修改的。 配置檔案目錄,主要修改hbase-env.cmd和hbase-s

IdentityServer 部署

# IdentityServer 部署踩坑記 ## Intro 週末終於部署了 `IdentityServer` 以及 `IdentityServerAdmin` 專案,踩了幾個坑,在此記錄分享一下。 ## 部署架構 專案是基於 [IdentityServerAdmin]() 專案修改的,感謝作者的開

伺服器重新部署

# 伺服器重新部署踩坑記 ## Intro 之前的伺服器是 Ubuntu 18.04 ,上週週末想升級一下伺服器系統,從 18.04 升級到 20.04,結果升級升掛了... 後來 SSH 始終連不上,索性刪除重新部署了一個,新部署了一個 Centos 8 的系統,新部署之後很多東西需要配置,折騰了好幾天

SpringBoot專案(單模組、多模組)使用docker容器執行jar包映象(

SpringBoot專案(單模組、多模組)使用docker容器執行jar包映象(踩坑) 1.mavem docker外掛配置 <!--docker 外掛配置--> <build> <finalName>生成jar包的名稱</

Angular2,Springboot,Zuul,Shiro跨域CORS請求實錄

前言:前後端分離,業務分離,閘道器路由等已經成為當下web application開發的流行趨勢。前端以單頁面路由為核心的框架為主體,可以單獨部署在nodejs或nginx上。後端以springboot為代表的分散式微服務框架為主體,可以獨立執行在任何埠上。相互通過符合restful規範的介面訪問或資料交換。

SpringBoot-整合PageHelper5.1.2

 背景就不介紹了,專案是SpringBoot+MyBatis搭建的,需要整合git上的PageHelper5.1.2,這個外掛大家都比較熟悉了 之前一直用的PageHelper4.0.3,整合是這樣的: //分頁外掛 PageHelper pageHelper = new PageHelp

SpringBoot指南(一):超連結--不能不經過請求直接跳轉到新的html及a標籤傳值

本篇博文轉自:https://blog.csdn.net/qq_36688143/article/details/79499959 html連結傳值及在新html取值和顯示上一步操作封裝的屬性資訊(顯示剛才建立的資料夾、發表的文章等)點選開啟連結  a標籤遍歷list傳值、傳請求:

Apache部署flask的一些記錄(win64+python36)

基礎配置: 將一個Flask應用部署到本地的Windows伺服器上。作業系統是64位的,程式是基於Python 3.6開發的。 部署選擇: mod_wsgi + Apache 注意事項: 不能混用32位和64位的檔案 安裝Python時要選擇“Install

部署Jenkins實現Git提交後自動構建的記錄

1、建立工程後項目的"原始碼管理"->"Git"->"Repositories"配置中,Repository URL的地址填寫需要注意:如果你的URL是http協議的地址,直接填入就好;如果你的URL是ssh協議的地址,則需要把"ssh://"去掉之後再填入。例如:完整地址為ssh:

SpringBoot+Mybatis+PageHelper分頁(-total總數有誤)

方式一:使用原生的PageHelper(親測OK) 1.在pom.xml中引入依賴 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId

Springboot中使用Mybatis框架對資料庫進行聯表查詢,

因為mybatis使用的基本是原生sql語句 所以首先從資料庫開始說 以mysql資料庫為例,對錶的連線查詢分為四種 內連線,外連線,交叉連線,和聯合連線 內連線使用比較運算子根據每個表共有的列的值匹配兩個表中的行 sql語句舉例:聯接查詢user,order表

SCCM部署運維之攻略

提示:由於科技發展日新月異,在筆者釋出文章時所貼的連結在此時是有效的,但不排除後續因軟體產品的版本更新導致連結失效。 目錄 需注意事項 SCCM簡介 SCCM是微軟推出的一款企業級資產運維平臺,屬於System Center家族產品的一員。全稱為Sy