在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 物聯(lián)網(wǎng)/ 構(gòu)建塊
依賴管理實戰(zhàn)
配置遠(yuǎn)程倉庫
安裝Gradle
簡介
項目自動化簡介
配置子項目
Gradle強大的特性
自動化測試
簡介
掌握構(gòu)建生命周期
使用命令行操作
構(gòu)建Java項目
管理任務(wù)
構(gòu)建工具
連續(xù)傳遞的特性
用Gradle開發(fā)Web項目
聲明依賴
構(gòu)建塊
簡介
測試Java應(yīng)用
java構(gòu)建工具
為什么選擇Gradle
拆分項目文件
單元測試
多項目打包
Gradle 起步
介紹這個Gradle項目
簡介
自定義腳本
Gradle包裝器
簡要概述依賴管理
項目模塊化

構(gòu)建塊

每個Gradle構(gòu)建都包括三個基本的構(gòu)建塊:項目(projects)、任務(wù)(tasks)和屬性(properties),每個構(gòu)建至少包括一個項目,項目包括一個或者多個任務(wù),項目和任務(wù)都有很多個屬性來控制構(gòu)建過程。

Gradle運用了領(lǐng)域驅(qū)動的設(shè)計理念(DDD)來給自己的領(lǐng)域構(gòu)建軟件建模,因此Gradle的項目和任務(wù)都在Gradle的API中有一個直接的class來表示,接下來我們來深入了解每一個組件和它對應(yīng)的API。

項目

在Gradle術(shù)語里項目表示你想構(gòu)建的一個組件(比如一個JAR文件),或者你想完成的一個目標(biāo)(比如打包app),如果你以前使用過Maven,你應(yīng)該聽過類似的概念。與Maven pom.xml相對應(yīng)的是build.gradle文件,每個Gradle腳本至少定義了一個項目。當(dāng)開始構(gòu)建過程后,Gradle基于你的配置實例化org.gradle.api.Project這個類以及讓這個項目通過project變量來隱式的獲得。下圖列出了API接口和最重要的方法。

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag24.png" alt="" />

一個項目可以創(chuàng)建新任務(wù)、添加依賴和配置、應(yīng)用插件和其他腳本,許多屬性比如name和description都是可以通過getter和setter方法來訪問。

Project實例允許你訪問你項目所有的Gradle特性,比如任務(wù)的創(chuàng)建和依賴了管理,記住一點當(dāng)訪問你項目的屬性和方法時你并不需要顯式的使用project變量--Gradle假定你的意思是Project實例,看看下面這個例子:

    //沒有使用project變量來設(shè)置項目的描述
    setDescription("myProject")
    //使用Grovvy語法來訪問名字和描述
    println "Description of project $name: " + project.description

在之前的章節(jié),我們只處理到單個peoject的構(gòu)建,Gradle支持多項目的構(gòu)建,軟件設(shè)計一個很重要的概念是模塊化,當(dāng)一個軟件系統(tǒng)變得越復(fù)雜,你越想把它分解成一個個功能性的模塊,模塊之間可以相互依賴,每個模塊有自己的build.gradle腳本。

任務(wù)

我們在第二章的時候就創(chuàng)建了一些簡單的任務(wù),你應(yīng)該了解兩個概念:任務(wù)動作(actions)和任務(wù)依賴,一個動作就是任務(wù)執(zhí)行的時候一個原子的工作,這可以簡單到打印hello world,也可以復(fù)雜到編譯源代碼。很多時候一個任務(wù)需要在另一個任務(wù)之后執(zhí)行,尤其是當(dāng)一個任務(wù)的輸入依賴于另一個任務(wù)的輸出時,比如項目打包成JAR文件之前先要編譯成class文件,讓我們來看看Gradle API中任務(wù)的表示:org.gradle.api.Task 接口。

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag25.png" alt="" />

屬性

每個Project和Task實例都提供了setter和getter方法來訪問屬性,屬性可以是任務(wù)的描述或者項目的版本號,在后續(xù)的章節(jié),你會在具體例子中讀取和修改這些屬性值,有時候你要定義你自己的屬性,比如,你想定義一個變量來引用你在構(gòu)建腳本中多次使用的一個文件,Gradle允許你通過外部屬性來定義自己的變量。

外部屬性

外部屬性一般存儲在鍵值對中,要添加一個屬性,你需要使用ext命名空間,看一個例子:

    //Only initial declaration of extra property requires you to use ext namespace
    project.ext.myProp = 'myValue'
    ext {
       someOtherProp = 123
    }

    //Using ext namespace to access extra property is optional
    assert myProp == 'myValue'
    println project.someOtherProp
    ext.someOtherProp = 567 

相似的,外部屬性可以定義在一個屬性文件中: 通過在/.gradle路徑或者項目根目錄下的gradle.properties文件來定義屬性可以直接注入到你的項目中,他們可以通過project實例來訪問,注意/.gradle目錄下只能有一哥Gradle屬性文件即使你有多個項目,在屬性文件中定義的屬性可以被所有的項目訪問,假設(shè)你在你的gradle.properties文件中定義了下面的屬性:

    exampleProp = myValue
    someOtherProp = 455

你可以在項目中訪問這兩個變量:

    assert project.exampleProp == 'myValue'

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

定義屬性的其他方法

你也可以通過下面的方法來定義屬性:

  • 通過-P命令行選項來定義項目屬性
  • 通過-D命令行選項來定義系統(tǒng)屬性
  • 環(huán)境屬性遵循這個模式: ORG_GRADLE_PROJECT_propertyName=someValue
上一篇:項目自動化簡介下一篇:聲明依賴