Gradle學習(二) Java Plugin

Java Plugin擁有一些幫助你的項目完成編譯,單元測試以及對你的代碼進行單元測試打包等一些操做的task
若是須要使用Java Plugin 只須要在你的build.gradle中添加
apply plugin: 'java' 這樣一行便可,這樣短短一行會給你的項目添加不少的task
可使用 gradle task命令來查看你的項目中有哪些task
Gradle 默認指望在src/main/java中去尋找你的代碼,在src/test/java中去尋找你的測試代碼,src/main/resources會做爲classpath,全部的輸出文件都會建立在build目錄下,jar包最終都會在build/libs目錄下
構建一個工程
使用 gradle build命令,Gradle會編譯你的代碼而且運行測試代碼建立jar包
在gradle安裝目錄\samples\java\quickstart下運行gradle build命令,運行成功以後會出現一個名爲build的文件夾,該文件夾目錄結構以下
classes文件夾存放編譯以後的字節碼文件,libs目錄下存放打包的jar文件,reports的文件夾下存放着本次打包的測試報告,resources文件夾下存放的內容與src/main/resources文件夾內容相同,
test-results文件夾下存放的本次打包的測試結果XML形式
其餘一些經常使用指令
gradle clean 刪除build目錄
gradle assemble 編譯而且打jar包,可是不會運行單元測試代碼,其餘一些插件也有該task,好比War plugin,會爲你的項目構建war包
gradle check 編譯而且運行你的測試代碼, 其餘一些插件也有該task ,好比Code-quality plugin就會對的代碼進行checkstyle操做

 

外部jar包依賴
一個Java工程一般會依賴於外部的jar包,Gradle可使用Maven的倉庫來獲取或者發佈相應的jar包。
Gradle配置Maven中央倉庫
 
repositories {
    mavenCentral()
}

添加依賴jar包java

dependencies {
   compile group: 'commons-collections', name: 'commons-collections',version: '3.2'
   testCompile group: 'junit', name: 'junit', version: '4.+'
}

compile group表明編譯期依賴該jar包,testCompile group 表明測試時期依賴的jar,對比maven的配置應爲web

能夠看出gradle的配置更爲簡潔api

個性化配置構建參數
java plugin爲你項目默認生成了許多相關的配置參數,在一般狀況下這些參數的默認值都能知足你的需求,若是不能知足你的需求的話這些配置參數也能夠被很容易的被修改
sourceCompatibility=1.7設置項目Java版本的兼容性爲1.7
version=‘1.0’設置項目的版本號爲1.0
jar {
  manifest {
       attributes 'Implementation-Title':'Gradle Quickstart','Implementation-Version': version
 }
}

  

爲jar包的manifest文件添加屬性
你可使用 gradle properties來列出當前項目的配置參數信息以及它們的值
 
發佈jar包
uploadArchives {
   repositories {
     flatDir {
        dirs 'repos'
      }
   }
}

  

運行 gradle uploadArchives以後會在當前目錄下生產一個名爲repos的目錄裏面有對應的jar包信息,能夠經過修改dirs的方式將jar包發送到中央倉庫

 

建立一個Eclipse項目
若是須要將你的項目導入到Eclipse中去,須要在build.gradle文件中加入以下配置
apply plugin:'eclipse'
而後運行gradle eclipse命令便可爲你的項目生成相關的Eclipse文件
 
多Java工程構建
在Gradle安裝目錄的/samples/java/multiproject文件夾中有一個多工程的構建例子
api工程經過生成一個jar文件爲客戶端提供XML webservice服務,webservice工程是一個會返回XML格式的web工程,shared工程的代碼即要被api工程調用同時webservice工程也會調用,屬於一個共享服務性工程。
要構建一個多項目的Gradle工程,首先須要建立一個settings文件,這個settings文件須要跟全部Java項目位於同一級目錄(如上圖所示),在這個settings文件裏你須要指定要構建哪些項目。這個settings文件的名字必需要
叫作settings.gradle.
settings文件內容
include "shared","api","service:webservice","service:shared"
   在多數的多工程項目中,常常會出現一些工程之間共享的配置,在multiproject的例子裏,把相同的配置定義在根工程( root project 相似於Maven的父工程概念)中,利用一種叫作配置注入( configuration injection
在Gradle的理念裏,根工程就至關因而一個容器,子工程就像這個容器中的一個個能夠遍歷的子元素,在這個「容器」下的項目被注入指定的配置。利用這種方式咱們能夠輕鬆的爲全部的項目引入共同須要的依賴jar包。
   這種方式與maven parent project的概念大致一致。
在multiproject這個sample中咱們能夠看到相應的配置注入的定義信息
subprojects {  //定義全部子工程共同須要的配置
    apply plugin: "java" //定義全部子工程使用java插件
    apply plugin: "eclipse-wtp" //定義全部子工程使用Eclipse插件

     repositories {  //定義全部子工程的中央倉庫
          mavenCentral()
     }

   dependencies { //定義全部子工程共同的依賴
       testCompile "junit:junit:4.11"
    }
 
   version = "1.0" //定義全部子工程的版本信息

   jar { //添加全部子工程打jar包時manifest文件的屬性
      manifest.attributes provider: "gradle"
   }
}

  

在這裏值得注意的是個人全部子工程都被「注入」了apply plugin: "java"的配置,這就意味着全部java plugin中的task,properties屬性在每一個子工程中都有
因此你能夠在根工程目錄下運行 gradle build命令來對全部子工程進行編譯,測試,打包操做。
 
項目之間的相互依賴
在多項目工程的構建中,常常會存在一些項目之間依賴的狀況,好比multiproject這個sample中api project就依賴了shared project。若是項目之間存在這個依賴關係,那麼只需在相應的gradle.build文件中配置
以下一句便可
api/build.gradle
dependencies {
   compile project(":shared")
}

  

 

相關文章
相關標籤/搜索