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內容如下:
- apply plugin: 'idea'
- apply plugin: 'java'
這就創建了一個初始的Gradle構建文件。該文件表明項目使用java插件,java插件會自動引入一些task,來完成java相關常用的操作,如編譯,測試,打包等。例外,因爲這個示例程序會使用Intellij IDEA作爲開發工具,故引入了idea插件,idea插件引入了一個task爲idea, 執行該task將創建我們的IDEA工程文件:
- gradle idea
打開工程文件後,我們就有了一個空白java項目。下面我們來創建項目的目錄結構。按照gradle的慣例,項目代碼應位於src/main/java下。測試代碼應位於src/test/java下。創建完畢後的項目的目錄結構如下:
下面我們添加一個Calculator以及相應的測試代碼,Calculator代碼如下:
- package org.dytes.github.gradle;
- public class Calculator {
- public Integer add(int a, int b) {
- return a + b;
- }
- }
CalculatorTest類內容如下:
- package org.dytes.github.gradle;
- import org.junit.Assert;
- import org.junit.Test;
- import static org.hamcrest.core.Is.is;
- public class CalculatorTest {
- @Test
- public void add_should_return_sum() {
- Calculator c = new Calculator();
- int ret = c.add(1, 2);
- Assert.assertThat(ret, is(3));
- }
- }
Main類內容如下:
- package org.dytes.github.gradle;
- public class Main {
- public static void main(String[] args) {
- Calculator c = new Calculator();
- System.out.println("1 + 2 =" + c.add(1, 2));
- }
- }
完成之後,項目的目錄結構如下:
針對此項目,我們可以編寫build文件如下,來完成編譯,測試以及打包的工作:
- apply plugin: 'idea'
- apply plugin: 'java'
- repositories {
- mavenCentral()
- }
- dependencies {
- testCompile(
- 'junit:junit:4.11',
- "org.hamcrest:hamcrest-core:1.3"
- )
- }
- task createJar(type: org.gradle.api.tasks.bundling.Jar, dependsOn:["test"]) {
- version = 0.1
- archiveName = "GradleDemo-${version}.jar"
- manifest{
- attributes("Main-Class": "org.dytes.github.gradle.Main")
- }
- from(sourceSets.main.output.classesDir)
- }
在上述build腳本中,repositories指定了測試代碼編譯所依賴的包可以從maven central repository獲取。dependencies指定了測試代碼在編譯時所依賴的包。另外,該build文件中,創建了一個打jar包的task,設置當前版本爲0.1,將編譯的class文件打包至GradleDemo-0.1.jar,按照慣例該task將項目內容打包至build/libs目錄下。
通過運行 gradle tasks可以查看當前構建腳本內所有的task列表。執行gradle createJar即可按照設定完成相應的編譯,測試和打包工作了。