2018年8月9日 星期四

Project 屬性 (Gradle 4.x 三)


※使用 def、ext

def springVersion = '5.0.8.RELEASE'
    
ext {
    mybatisVersion = '3.4.6'
}
    
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'org.springframework', name: 'spring-context', version: springVersion
    compile group: 'org.mybatis', name: 'mybatis', version: mybatisVersion
}

※如果 def 和 ext 都寫一樣的 key,會以 ext 為主


※ext 進階使用

ext {
    xxx = [
        mybatisVersion : '3.4.6',
        springVersion : '5.0.8.RELEASE'
    ]
}
    
dependencies {
    compile group: 'org.springframework', name: 'spring-context', version: rootProject.ext.xxx.springVersion
    compile group: 'org.mybatis', name: 'mybatis', version: rootProject.ext.xxx.mybatisVersion
}

※可以定義 Map,Map 裡還能再寫 Map



※使用 gradle.properties


官網連結

這個檔案預設沒有,可以新增在 GRADLE_USER_HOME 或者專案目錄下,Project 有一個寫死的變數,就是這一個,所以名字不能改,如果兩個地方都有這個檔案且 key 相同,會以 GRADLE_USER_HOME 為主


預設的 GRADLE_USER_HOME 在 %username%\.gradle,但可以臨時改變這個目錄,如 gradle -Dgradle.user.home=D:\ooo,就是將目錄變成 D 槽的 ooo 資料夾,將檔案新增在此即可

屬性流程:

初始化由專案的 gradle.properties -> GRADLE_USER_HOME 的 gradle.properties -> build.gradle 的 def -> build.gradle 的 ext,後者蓋前者
所以這 4 個地方如果有 key 一樣,最後會被 ext 裡的 key 覆蓋

※gradle.properties

isDebug=false
xxx='x2'




※settings.gradle

// if (isDebug.toBoolean()) {
//    include 'SubGradle2'
// }
 
if (hasProperty('isDebug') ? isDebug.toBoolean() : false) {
    include 'SubGradle2'
}

※hasProperty 判斷有沒有這個 key,只要有,不管內容是什麼,就算是空的也一樣,都會回傳 true

※因為怕沒有這個 key 會報錯,所以用了 hasProperty

※我試過寫了版本號當字串,如 spring 的版本,然後用在 dependencies
四個地方都設定,但只有 def 和 ext 有用,而且也沒報錯,不知道為什麼


倉庫使用私服

repositories {
    maven {
        credentials {
            username "$user"
            password "$passwd"
        }
        url '私服網址'
    }
}

※user 和 passwd 變數就可以寫在 gradle.properties 裡,當然在這裡寫死也是可以

沒有留言:

張貼留言