2015-06-21 46 views
1

我正在使用gradle構建java spring項目。我所試圖做的是:基於構建變體的Java項目的Gradle依賴關係管理

如果構建目標是開發或沒有指定,使用依賴

編譯(「org.hsqldb:HSQLDB」)

如果構建目標是督促或QA,使用依賴

編譯( 「MySQL的:使用mysql-connector-java的:5.1.31」)

我不知道怎麼的gradle中做到這一點。首先是如何將構建類型變量傳遞給構建腳本。第二件事是如何編寫基於變量的條件依賴代碼?提前致謝。

回答

3

build.gradle是一個Groovy文件,所以你可以使用if語句來動態地改變你的依賴,就像這樣:

dependencies { 
    // other dependencies 

    if (someFlag) { 
     compile("org.hsqldb:hsqldb") 
    } else { 
     compile("mysql:mysql-connector-java:5.1.31") 
    } 
} 

要配置這樣的一個可以使用project properties

dependencies { 
    // other dependencies 

    if (!project.hasProperty("targetEnv") || targetEnv == "dev") { 
     compile("org.hsqldb:hsqldb") 
    } else if (targetEnv == "prod" || targetEnv == "qa") { 
     compile("mysql:mysql-connector-java:5.1.31") 
    } else { 
     throw new InvalidUserDataException("Unknown target environment '$targetEnv'") 
    } 
} 

現在,當gradle與一起運行時,將使用mysql依賴項或-PtargetEnv=prod,hsqldb - 對於未指定targetEnv或設置爲dev的情況,並且如果傳遞某個未知環境名稱,則最終會拋出異常。

相關問題