Gradle理解

http://cloudbbs.org/forum.php?mod=viewthread&tid=14451


什麼是Gradle


Gradle是一個類似Maven和Ant的構建系統,使用Groovy編寫構建腳本,能很方便的進行依賴管理和多項目的構建。Gradle集Ant的靈活與強大以及Maven的依賴管理功能和慣例於一身,是一種更高效的構建工具。


與Maven和Ant等基於XML的構建工具相比,Gradle由於使用基於Groovy語言的DSL語法編寫構建腳本,使得腳本清晰易懂,同時也變得更加便於維護(如果熟悉Groovy語言的話)。


Gradle示例


下面以一個簡單的Java項目爲例,演示在Intellij IDEA下Gradle的用法。首先創建一個build.gradle文件,通過gradle來生成IDEA的項目文件,build.gradle內容如下:


Java代碼 
  1. apply plugin: 'idea'
  2. apply plugin: 'java'

這就創建了一個初始的Gradle構建文件。該文件表明項目使用java插件,java插件會自動引入一些task,來完成java相關常用的操作,如編譯,測試,打包等。例外,因爲這個示例程序會使用Intellij IDEA作爲開發工具,故引入了idea插件,idea插件引入了一個task爲idea, 執行該task將創建我們的IDEA工程文件:


Java代碼 
  1. gradle idea

打開工程文件後,我們就有了一個空白java項目。下面我們來創建項目的目錄結構。按照gradle的慣例,項目代碼應位於src/main/java下。測試代碼應位於src/test/java下。創建完畢後的項目的目錄結構如下:



下面我們添加一個Calculator以及相應的測試代碼,Calculator代碼如下:


Java代碼 
  1. package org.dytes.github.gradle;
  2. public class Calculator {
  3.   public Integer add(int a, int b) {
  4.     return a + b;
  5.   }
  6. }

CalculatorTest類內容如下:


Java代碼 
  1. package org.dytes.github.gradle;
  2. import org.junit.Assert;
  3. import org.junit.Test;
  4. import static org.hamcrest.core.Is.is;
  5. public class CalculatorTest {
  6.   @Test
  7.   public void add_should_return_sum() {
  8.     Calculator c = new Calculator();
  9.     int ret = c.add(12);
  10.     Assert.assertThat(ret, is(3));
  11.   }
  12. }

Main類內容如下:

Java代碼 
  1. package org.dytes.github.gradle;
  2. public class Main {
  3.   public static void main(String[] args) {
  4.     Calculator c = new Calculator();
  5.     System.out.println("1 + 2 =" + c.add(12));
  6.   }
  7. }

完成之後,項目的目錄結構如下:



針對此項目,我們可以編寫build文件如下,來完成編譯,測試以及打包的工作:


Java代碼 
  1. apply plugin: 'idea'
  2. apply plugin: 'java'
  3. repositories {
  4.   mavenCentral()
  5. }
  6. dependencies {
  7.   testCompile(
  8.     'junit:junit:4.11',
  9.     "org.hamcrest:hamcrest-core:1.3"
  10.   )
  11. }
  12. task createJar(type: org.gradle.api.tasks.bundling.Jar, dependsOn:["test"]) {
  13.   version = 0.1
  14.   archiveName = "GradleDemo-${version}.jar"
  15.   manifest{
  16.     attributes("Main-Class""org.dytes.github.gradle.Main")
  17.   }
  18.   from(sourceSets.main.output.classesDir)
  19. }

在上述build腳本中,repositories指定了測試代碼編譯所依賴的包可以從maven central repository獲取。dependencies指定了測試代碼在編譯時所依賴的包。另外,該build文件中,創建了一個打jar包的task,設置當前版本爲0.1,將編譯的class文件打包至GradleDemo-0.1.jar,按照慣例該task將項目內容打包至build/libs目錄下。


通過運行 gradle tasks可以查看當前構建腳本內所有的task列表。執行gradle createJar即可按照設定完成相應的編譯,測試和打包工作了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章