成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

Gradle學(xué)習(xí)3——自定義屬性

cc17 / 1465人閱讀

摘要:你也可以定義自己的屬性。允許用戶(hù)通過(guò)擴(kuò)展屬性自定義一些變量。這是因?yàn)槎x的閉包將設(shè)置成了當(dāng)前的。還為我們提供了多種方法來(lái)自定義的。在這個(gè)屬性文件中聲明的屬性對(duì)所有的項(xiàng)目可用。

讀取和設(shè)置Project和Task的屬性是很重要的一塊內(nèi)容,每個(gè)Project和Task實(shí)例都提供了可以通過(guò)getter和setter方法訪(fǎng)問(wèn)的屬性。一個(gè)屬性可能是一個(gè)任務(wù)的描述或者項(xiàng)目的版本。你也可以定義自己的屬性。Gradle允許用戶(hù)通過(guò)擴(kuò)展屬性自定義一些變量。還有,很多Plugin都會(huì)加入擴(kuò)展屬性,可以通過(guò)設(shè)置屬性來(lái)控制使用Pulgin。

1 Project自帶的屬性

Gradle在默認(rèn)情況下已經(jīng)為Project定義了很多屬性,其中比較常用的有:
project:Project本身對(duì)象
name:Project的名字
path:Project的絕對(duì)路徑
description:Project的描述信息
buildDir:Project構(gòu)建結(jié)果存放目錄
version:Project的版本號(hào)
屬性都可以通過(guò)getter和setter方法來(lái)訪(fǎng)問(wèn),也可以直接使用點(diǎn)好的形式來(lái)訪(fǎng)問(wèn),例如:

setDescription("myProject")
println "Description of project $name: "+project.description

當(dāng)在build.gradle中訪(fǎng)問(wèn)屬性和方法的時(shí)候,不需要使用project變量,它會(huì)假設(shè)你使用的是project實(shí)例。但是有一些情況需要注意,例如:

version = "this is the project version"
description = "this is the project description"

task showProjectProperties << {
   println version
   println project.description
   println description
}

由于Task本身也有description屬性,所以當(dāng)在Task中,如果不顯式的指定project,就會(huì)打印的是Task的description。這是因?yàn)槎xTask的閉包將delegate設(shè)置成了當(dāng)前的Task。有關(guān)delegate的介紹,我們可以看前一篇文章。
Gradle還為我們提供了多種方法來(lái)自定義Project的Property。

2 額外屬性

Gradle的很多領(lǐng)域模型類(lèi)提供了特別的屬性支持。在內(nèi)部,這些屬性以簡(jiǎn)直對(duì)的形式存儲(chǔ)。為了添加屬性,你需要使用ext命名空間。

// 只在初始聲明額外屬性時(shí)需要使用ext命名空間
project.ext.myProp="myValue"

ext{
        someOtherProp=123
}

// 使用ext命名空間訪(fǎng)問(wèn)屬性是可選的
assert myProp=="myValue"

println project.someOtherProp

ext.someOtherProp=567

類(lèi)似的,額外的屬性也可以通過(guò)屬性文件來(lái)提供。

3 Gradle屬性

Gradle屬性可以通過(guò)在gradle.properties文件中聲明直接添加到項(xiàng)目中,這個(gè)文件位于/.gradle目錄或者項(xiàng)目的根目錄下。這些屬性可以通過(guò)項(xiàng)目實(shí)例訪(fǎng)問(wèn)。即使有多個(gè)項(xiàng)目,每個(gè)用戶(hù)也只有能一個(gè)Gradle屬性文件在xx/.gradle目錄下,這是目前Gradle對(duì)它的限制。

在這個(gè)屬性文件中聲明的屬性對(duì)所有的項(xiàng)目可用。
我們假設(shè)在gradle.properties文件中聲明的:

exampleProp=myValue
someOtherProp=455

可以按照如下方式訪(fǎng)問(wèn)項(xiàng)目中的這兩個(gè)變量

assert project.exampleProp=="myValue"

task printGradleProperties <<{
    println "Second property :$someOtherProp"
}

4 聲明屬性的其他方式

前面兩種方式,我們大多用來(lái)聲明自定義變量及其值。Gradle也提供了很多其他方式為構(gòu)建提供屬性。

4.1 項(xiàng)目屬性通過(guò) -P命令行選項(xiàng)提供

對(duì)于下面的例子,

task printMyProperties <<{
    println myProperties
}

如果我們直接執(zhí)行 gradle -q printMyProperties 命令,會(huì)報(bào)錯(cuò):

* What went wrong:
Execution failed for task ":printMyProperties".
> Could not get unknown property "myProperties" for task ":printMyProperties" of type org.gradle.api.DefaultTask.

這是因?yàn)閙yProperties屬性沒(méi)有定義,所以我們?cè)谡{(diào)用gradle命令的時(shí)候可以通過(guò) -P 命令來(lái)傳參數(shù),就可以把這個(gè)屬性打印出來(lái)。

gradle -q -P myProperties="this is -P params"  printMyProperties

4.2 系統(tǒng)屬性通過(guò) -D命令行選項(xiàng)提供

與在Java中類(lèi)似的,我們?cè)贕radle中也可以通過(guò)-D來(lái)定義JVM的系統(tǒng)參數(shù),只是需要增加一些約定,每個(gè)通過(guò)-D 方式聲明的屬性前面都要以“org.gradle.project”為前綴,例如:

gradle -q -D org.gradle.project.myProperties="this is -D params"  printMyProperties

4.3 環(huán)境屬性模式提供

我們可以通過(guò)設(shè)置環(huán)境變量的形式來(lái)設(shè)置Project的屬性。但是也要增加一些約定,例如每個(gè)屬性前面都要加上一個(gè)ORG_GRADLE_PROJECT_的前綴,例如:

ORG_GRADLE_PROJECT_propertyName=someValue

當(dāng)你再去執(zhí)行printMyProperties這個(gè)task的時(shí)候就不用傳參數(shù)了。

歡迎加入學(xué)習(xí)交流群569772982,大家一起學(xué)習(xí)交流。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/67775.html

相關(guān)文章

  • 慕課網(wǎng)_《新一代構(gòu)建工具gradle學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期二說(shuō)明本文部分內(nèi)容均來(lái)自慕課網(wǎng)。項(xiàng)目一個(gè)項(xiàng)目代表一個(gè)正在構(gòu)建的組件比如一個(gè)文件,當(dāng)構(gòu)建啟動(dòng)后,會(huì)基于實(shí)例化一個(gè)類(lèi),并且能夠通過(guò)變量使其隱式可用。任務(wù)動(dòng)作定義了一個(gè)最小的工作單元。 時(shí)間:2017年05月16日星期二說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:無(wú)個(gè)人學(xué)習(xí)源碼:https://github.com/zccod...

    antyiwei 評(píng)論0 收藏0
  • Gradle 筆記

    via: https://tianyu94.com/2019/06/... Make the impossible possible, make the possible easy, and make the easy elegant Gradle is Groovy Minimize Coupling, Maximize Cohesion Task 任務(wù) task helloWorld {...

    coordinate35 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<