1. 程式人生 > >gradle專案中profile的實現

gradle專案中profile的實現

gradle中並沒有直接類似maven中的profile支援,只能變通的用其它方法來處理,在打包不同環境的應用時,通常會遇到二類問題:

一、不同的環境依賴的jar包不同

拿web開發來說,生產環境一般會採用weblogic,jboss這類重量級的容器,通常這類web server已經內建了很多第三方的通用jar包,而開發環境,一般採用嵌入式jetty這類輕量級的容器,內建的jar包會少一些,在maven中可以用<scope>provided</scope>來處理,到了gradle中可以這麼處理:

build.gradle檔案參考下面的寫法:

def env = System.getProperty("env") ?: "dev"

apply from: "profile-${env}.gradle"

大概意思是,根據傳入的引數env不同,載入不同的profile檔案。在同級目錄下,要放二個檔案(下面演示的場景為,dev環境載入的spring版本為4.1.6,而prod環境載入的spring版本為4.2.3):

profile-dev.gradle

dependencies {
    compile 'org.springframework:spring-core:4.1.6.RELEASE'
    compile 'org.springframework:spring-beans:4.1.6.RELEASE'
    compile 'org.springframework:spring-context:4.1.6.RELEASE'
    compile 'org.springframework:spring-context-support:4.1.6.RELEASE'
    compile 'org.springframework:spring-aop:4.1.6.RELEASE'
}

profile-prod.gradle

dependencies {
    compile 'org.springframework:spring-core:4.2.3.RELEASE'
    compile 'org.springframework:spring-beans:4.2.3.RELEASE'
    compile 'org.springframework:spring-context:4.2.3.RELEASE'
}

編譯時,gradle命令這麼寫:

gradle build -Denv=prod  這樣編譯的就是prod環境

gradle build -Denv=dev  這樣編譯的就是dev環境(注:dev是預設環境,所以如果是dev環境,最後的-Denv=dev也可以省略)

二、不同的環境,配置的引數不同

思路:為每個環境建不同的目錄,把各環境的屬性檔案按目錄存放,編譯時動態設定gradle的資源目錄

sourceSets {
    main {
        resources {
            srcDirs = ["src/main/resources", "src/main/profile/$env"]
        }
    }
}

在剛才的基礎上,再加入這一段即可。

整個專案的結構圖如下:

相關推薦

gradle專案profile實現

gradle中並沒有直接類似maven中的profile支援,只能變通的用其它方法來處理,在打包不同環境的應用時,通常會遇到二類問題: 一、不同的環境依賴的jar包不同 拿web開發來說,生產環境一般會採用weblogic,jboss這類重量級的容器,通常這類web server已經內建了很多第三方的通用

Lucene筆記38-Lucene在專案實現分析

一、實時搜尋中存在的問題 上一節我們提到NRT實時搜尋,實時搜尋的提交併不是實時的,可能要好幾個小時才能提交一次,為什麼搜尋這麼快呢,因為索引資料更新都在記憶體中實現的,那麼,假設有這麼一種情況,還沒有提交,機器突然掛掉了,那硬碟上的資料還是舊的,就會存在資料不一致的問題了。現在有一個解決方

Java Gradle專案的資源正確獲取

引言 兩個getResource方法 小結 引言 一個Java Gradle專案會涉及到資源的訪問. 一般情況下會將當前專案所需的資原始檔全部放置

前端框架Vue——vue-i18n ,vue專案如何實現國際化,$t的用法

一、demo 場景需求分析 需求很簡單,左上角 ‘’網易雲音樂‘’就是一箇中英文切換的按鈕,點選彈出提示框,確認切換語言後,實現英文版本。 切換成英文版本: 二、實現國際化   首先,我開發是以 vue 為技術棧,所以如題用的國際化外掛是 vue

Gradle專案gradle.build檔案的buildScript程式碼塊

在編寫Gradle指令碼的時候,在build.gradle檔案中經常看到這樣的程式碼: buildScript { repositories { mavenCentral() } } repositories { mavenCe

vue專案實現展示markdown檔案

網上有很多用vuepress的方法,我試了下,另外起一個vue程式的話,很容易實現該方法,但是如果是要嵌入到已有的vue專案中,我沒有嘗試成功,於是用了以下方法來實現。 1)安裝npm install

使用android studio將eclipse專案改造成gradle專案踩過的坑

       本文中部分內容是看過了張大神的部落格後分享出來的。        其實android studio使用起來和之前習慣用eclipse開發區別並不大,只是一些快捷鍵發生了變化,這個是需要你

gradle專案如何支援java與scala混合使用?

一、目錄結構 基本上跟maven一樣,tips:這一堆目錄結構不用死記,後面會講如何用gradle命令快速生成 二、build.gradle配置 1 group 'yjmyzz' 2 version '1.0-SNAPSHOT' 3 4 appl

Android Studio] Gradle專案新增JNI生成檔案(.so檔案)

轉:http://blog.csdn.net/qiujuer/article/details/24209457 為了適應潮流使用Android Studio還是有半年多了! 對於從Eclipse遷移專案到Android Studio中新增.jar檔案和.so檔案無疑是一件很重要也是很頭疼的問題! 在最新

前端框架Vue(16)——vue-i18n ,vue專案如何實現國際化

一、前言   趁著10月的最後一天,來寫一篇關於前端國際化的實踐型部落格。國際化應該都不陌生,就是一個網站、應用可以實現語言的切換。   在這就不談原理,只說說如何實現中英文的切換。做技術的總得先把 demo 做出來嘛。 二、demo 場景需求分析

[Android Studio] Gradle專案新增JNI生成檔案(.so檔案)

轉自:http://blog.csdn.net/qiujuer/article/details/24209457?utm_source=tuicool&utm_medium=referral 為了適應潮流使用Android Studio還是有半年多了! 對於從

IntelliJ IDEA如何在Gradle專案支援Web Application

總結步驟如下: 1、專案結構如下: project |——web              |———WEB-INF                                   |————web.xml              |————index.jsp 2、配置

vue專案如何實現國際化

一、前言  趁著10月的最後一天,來寫一篇關於前端國際化的實踐型部落格。國際化應該都不陌生,就是一個網站、應用可以實現語言的切換。  在這就不談原理,只說說如何實現中英文的切換。做技術的總得先把 demo 做出來嘛。二、demo 場景需求分析需求很簡單,左上角 ‘’網易雲音樂

所謂的網頁爬蟲用java程式碼來實現,此程式碼適合在maven專案使用使用,因為,程式碼的類所對應的依賴可以讓maven下載。

//獲得httpClient物件 CloseableHttpClient httpClient = HttpClients.createDefault(); //url公司域名隨便 String url = "https://www.baidu.co

vue專案實現新增收藏的功能,以及利用vue-resource傳送請求

1.新增收藏功能     建立一張表,儲存歌手id,使用者id,利用外來鍵將歌手錶與使用者表關聯起來。如果新增收藏之後,為該使用者新增一條資料,取消收藏後,將該條資料刪除。     當用戶登入之後才能顯示歌手列表中該使用者已經收藏過的歌手,然後將這些收

在vue專案實現註冊時改變頭像,同時實現將圖片上傳的伺服器端

 一.如何實現在註冊時點選頭像時實現更改圖片的操作      1.將img和input[type="file"]放在同一個div中,利用絕對定位,讓兩者擁有相同的大小,將input的預設樣式變為透明,讓img覆蓋的input之上;img中有一個屬性,acc

JavaWeb企業級專案接入順豐官方API實現物流實時查詢(親測有效)

由於現在順豐與快遞100鬧掰了,所以使用快遞一百已經查不到順豐的物流資訊了,包括快遞鳥等,現在想要在專案中實現順豐快遞的物流查詢只能用順豐官方API來查詢,然而這個官方的API並沒有快遞一百那些介面那麼容易,需要很複雜的一套流程,並且順豐用的返回形式都是XML檔案,就需要設計到XML檔案的修改與

vue專案jsonp抓取資料實現方式

先安裝依賴:cnpm install --save jsonp 程式碼如下: 1. 然後建立一個jsonp.js import originJSONP from 'jsonp'   //引用jsonp   export default function jsonp(url,data,opt

vue專案,實現遮罩

問題: 1.vue中的元件會自動生成虛擬DOM,無法設定高度的百分比 2.選擇vue例項的鉤子函式 實現: 選擇mounted鉤子函式(此函式是在DOM渲染完成之後呼叫),在此函式值中動態設定目標div的高度,高度的單位為px.用另一個元素的clientHeight為目標idv賦值 程式碼

關於專案的執行緒的堆疊詳細資訊,利用jsp頁面來實現

在實際的專案中我們通過Thread.getAllStacktraces()方法進行檢視相關的資訊。這樣可以隨時方便的管理檢視程式中的執行緒的相關資訊 <%@ page language="java" contentType="text/html; charset=utf-8"