天天看點

Gradle學習系列之一——Gradle快速入門

這是一個關于Gradle的學習系列,其中包含以下文章:

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-1.html">Gradle快速入門</a>

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-2.html" target="_blank">建立Task的多種方法</a>

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-3.html" target="_blank">讀懂Gradle文法</a>

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-4.html" target="_blank">增量式建構</a>

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-5.html" target="_blank">自定義Property</a>

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-6.html" target="_blank">使用java Plugin</a>

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-7.html" target="_blank">依賴管理</a>

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-8.html" target="_blank">建構多個Project</a>

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-9.html" target="_blank">自定義Task類型</a>

<a href="http://www.cnblogs.com/davenkin/p/gradle-learning-10.html" target="_blank">自定義Plugin</a>

Gradle學習系列之一——Gradle快速入門

  

  請通過以下方式下載下傳本系列文章的Github示例代碼:

  現在我們都在談領域驅動設計,Gradle本身的領域對象主要有Project和Task。Project為Task提供了執行上下文,所有的Plugin要麼向Project中添加用于配置的Property,要麼向Project中添加不同的Task。一個Task表示一個邏輯上較為獨立的執行過程,比如編譯Java源代碼,拷貝檔案,打包Jar檔案,甚至可以是執行一個系統指令或者調用Ant。另外,一個Task可以讀取和設定Project的Property以完成特定的操作。

  讓我們來看一個最簡單的Task,建立一個build.gradle檔案,内容如下:

  這裡的“&lt;&lt;”表示向helloWorld中加入執行代碼——其實就是groovy代碼。Gradle向我們提供了一整套DSL,是以在很多時候我們寫的代碼似乎已經脫離了groovy,但是在底層依然是執行的groovy。比如上面的task關鍵字,其實就是一個groovy中的方法,而大括号之間的内容則表示傳遞給task()方法的一個閉包。除了“&lt;&lt;”之外,我們還很多種方式可以定義一個Task,我們将在本系列後續的文章中講到。

  在與build.gradle相同的目錄下執行:

  指令行輸出如下:

<a></a>

  在預設情況下,Gradle将目前目錄下的build.gradle檔案作為項目的建構檔案。在上面的例子中,我們建立了一個名為helloWorld的Task,在執行gradle指令時,我們指定執行這個helloWorld Task。這裡的helloWorld是一個DefaultTask類型的對象,這也是定義一個Task時的預設類型,當然我們也可以顯式地聲明Task的類型,甚至可以自定義一個Task類型(我們将在本系列的後續文章中講到)。

  比如,我們可以定義一個用于檔案拷貝的Task:

  以上copyFile将xml檔案夾中的所有内容拷貝到destination檔案夾中。這裡的兩個檔案夾都是相對于目前Project而言的,即build.gradle檔案所在的目錄。

  Task之間可以存在依賴關系,比如taskA依賴于taskB,那麼在執行taskA時,Gradle會先執行taskB,然後再執行taskA。聲明Task依賴關系的一種方式是在定義一個Task的時候:

  Gradle在預設情況下為我們提供了幾個常用的Task,比如檢視Project的Properties、顯示目前Project中定義的所有Task等。可以通過一下指令檢視Project中所有的Task:

  輸出如下:

  可以看到,除了我們自己定義的copyFile和helloWorld之外,Gradle還預設為我們提供了dependencies、projects和properties等Task。dependencies用于顯示Project的依賴資訊,projects用于顯示所有Project,包括根Project和子Project,而properties則用于顯示一個Project所包含的所有Property。

  在預設情況下,Gradle已經為Project添加了很多Property,我們可以調用以下指令進行檢視:

  在以上Property中,allprojects表示所有的Project,這裡隻包含一個根Project,在多項目建構中,它将包含多個Project;buildDir表示建構結果的輸出目錄;我們自己定義的helloWorld和copyFile也成為了Project中的Property。另外,Project還包括用于執行Ant指令的DefaultAntBuilder(Property名為ant)和Project的描述屬性description。

    本文轉自 一點點征服   部落格園部落格,原文連結:http://www.cnblogs.com/ldq2016/p/6698473.html,如需轉載請自行聯系原作者