安裝配置Gradle,以及使用

1、介紹

關於Gradle是什麼東西,這裏也不用介紹了,相似於Maven,不過本身Maven用的也不深,沒法對比區別有多大,可是看到Gradle的官網上面的User Guide,介紹的篇幅很大,功能估計不少,想要深刻使用也要花不少時間。html

https://docs.gradle.org/current/userguide/userguide.htmljava

2、安裝:

其實相似Maven的安裝方式,先下載,後解壓。apache

下載地址:http://gradle.org/gradle-download/
app

解壓後,在  個人電腦 -> 屬性 -> 高級系統設置 -> 環境變量 ,添加一個系統變量GRADLE_HOME,變量值爲解壓縮路徑,如:E:\eclipse\gradle-2.6eclipse

在path中添加 %GRADLE_HOME%\bin ,完成安裝。maven

win+r,後cmd,輸入gradle -v,ide

安裝完畢。
單元測試

3、Gradle一些概念

一、在Gradle中,有兩個基本概念:項目任務。請看如下詳解:

  • 項目是指咱們的構建產物(好比Jar包)或實施產物(將應用程序部署到生產環境)。一個項目包含一個或多個任務。測試

  • 任務是指不可分的最小工做單元,執行構建工做(好比編譯項目或執行測試)。build,test之類的命令?gradle

那麼,這些概念和Gradle的構建又有什麼聯繫呢?好,每一次Gradle的構建都包含一個或多個項目

下面這張圖展現了上面所談到的這些概念的關係。

二、3個配置文件

咱們可以使用如下配置文件對Gradle的構建進行配置:

  • Gradle構建腳本(build.gradle)指定了一個項目和它的任務。

  • Gradle屬性文件(gradle.properties)用來配置構建屬性。

  • Gradle設置文件(gradle.settings)對於只有一個項目的構建而言是可選的,若是咱們的構建中包含多於一個項目,那麼它就是必須的,由於它描述了哪個項目參與構建。每個多項目的構建都必須在項目結構的根目錄中加入一個設置文件。

三、相關插件

有用的特性都由插件提供。插件可以作到:添加新任務、爲新加入的任務提供默認配置(默認配置會在項目中注入新的約定)、加入新的屬性,能夠覆蓋插件的默認配置屬性、爲項目加入新的依賴

4、使用

一、咱們能夠手動創建一個項目

好比在 E:\Gradle\workspace\gradle_demo ,項目名稱hello_gradle,項目中新建一個文件build.gradle,目前項目就只有這個文件。


在build.gradle文件中添加改行,加入 java 插件,

apply plugin: 'java'

加入插件後,能夠方便咱們對項目進行構建;

二、手動創建項目工程文件:

src\main\java

src\main\resources 

src\test\java 

src\test\resources

執行gradle build 構建。

能夠看到,在build文件中,libs生成了xxx.jar 文件。

三、添加java文件並測試。

在src\main\java 中,添加包com.demo,並添加HelloWorld.java文件

package com.demo;

public class HelloWorld {
 
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

執行gradle assemble ,編譯打包項目,使用上面提到的gradle build ,一樣能夠編譯打包項目,區別在於:

Java插件在咱們的構建中加入了不少任務,咱們這篇教程涉及到的任務以下:

  • assemble任務會編譯程序中的源代碼,並打包生成Jar文件,這個任務不執行單元測試。

  • build任務會執行一個完整的項目構建。

  • clean任務會刪除構建目錄。

  • compileJava任務會編譯程序中的源代碼。

上面是參考  http://blog.jobbole.com/72558/ 博文。

如今進入build->libs 執行 java -jar hello_gradle.jar 提示

問題出在,咱們沒有在manifest文件中配置Jar文件的主類。解決這個問題的關鍵

上面已經說了,在build.gradle文件中加入以下代碼

jar {
    manifest {
        attributes 'Main-Class': 'com.demo.HelloWorld'
    }
}

而後先執行 gradle clean ,刪除構建目錄。

在執行 gradle build ,構建項目

成功打印出。

四、添加依賴,這裏使用Maven central倉庫

1)、在build.gradle文件中,添加下面代碼

repositories {
    mavenCentral()
}

2)、而後聲明依賴:

build.gradle文件中,咱們聲明瞭兩個依賴:

dependencies {
    compile 'log4j:log4j:1.2.17'
    testCompile 'junit:junit:4.11'
}

3)、編寫代碼

首先,src/main/java/com/demo目錄下新建一個MessageService類並加以實現,代碼以下:

package com.demo;
 
public class MessageService {
 
    public String getMessage() {
        return "Hello World!";
    }
}

其次,src/main/test/com/demo目錄下新建一個MessageServiceTest類,編寫單元測試,代碼以下:

package com.demo;
 
import org.junit.Before;
import org.junit.Test;
 
import static org.junit.Assert.assertEquals;
 
public class MessageServiceTest {
 
    private MessageService messageService;
 
    @Before
    public void setUp() {
        messageService = new MessageService();
    }
 
    @Test
    public void getMessage_ShouldReturnMessage() {
        assertEquals("Hello World!", messageService.getMessage());
    }
}

第三,src/main/java/com/demo目錄下新建一個HelloWorld類,這是程序的主類,從MessageService對象獲取信息,並使用Log4j寫入日誌,代碼以下:

package com.demo;
 
import org.apache.log4j.Logger;
 
public class HelloWorld {
 
    private static final Logger LOGGER = Logger.getLogger(HelloWorld.class);
 
    public static void main(String[] args) {
        MessageService messageService = new MessageService();
 
        String message = messageService.getMessage();
        LOGGER.info("Received message: " + message);
    }
}

第四,src/main/resources目錄中,使用log4j.properties配置log4j,log4j.properties文件以下:

log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n
 
log4j.rootLogger=DEBUG,Stdout

執行編譯打包 gradle build

執行 gradle test

咱們能夠看到,在build->reports->tests文件夾中,會生成test的報告


執行 java -jar hello_gradle.jar後,出現下面錯誤,該問題緣由是因爲項目依賴了log4j 和 junit ,編譯打包項目並無把這兩個包也打包進項目。

在build.gradle中,加入以下代碼便可。

jar {
    from {    configurations.compile.collect  {  it.isDirectory()? it :zipTree(it)}}
}

成功打印。

五、多項目構建

參考 http://blog.jobbole.com/84471/

相關文章
相關標籤/搜索