從零開始,跟我一起做jblog項目(三)從Maven到Gradle


從零開始,跟我一起做jblog項目(一)引言

從零開始,跟我一起做jblog項目(二)Maven

從零開始,跟我一起做jblog項目(三)從Maven到Gradle

 

上一節講到項目構建工具Maven,對JAR包的管理不可謂不強大

博主在使用maven引入Spring框架時,了解到Spring推薦使用gradle工具來構建項目

百度了一下,發現Gradle也是一套很優秀的項目構建工具

Gradle使用Groovy語言配置項目和依賴,在極大地提升靈活性和配置性之外,甚至配置代碼要比XML結構的POM文件少很多

鑒於我希望將jblog打造成一款modern的小型個人博客系統

而gradle的首頁上介紹自己為Modern Open-Source Enterprise Build Automation

所以我決定將項目原型從maven構建轉移為gradle構建

目前關於Gradle的教程還比較零散,下面我會一步一步演示如何將Gradle集成到myeclipse中去

 

首先,到Gradle官網下載最新版的gradle

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

博主下載的是2.8版本,寫這篇文章的時候已經更新到2.9了

下載下來解壓到任意目錄

然后配置Windows環境變量,一共要配置三個,分別如下:

GRADLE_HOME:你的gradle解壓路徑,例如:D:\Workspaces\gradle-2.8

GRADLE_USER_HOME:你希望作為本地倉庫的路徑,自己建一個名為.gradle的路徑,例如:D:\Workspaces\.gradle

path:這個不用說,系統路徑,可以在cmd中直接敲gradle命令的,在path最后添加:%GRADLE_HOME%\bin;

這三個配置好了,我們初步驗證一下,打開cmd,任意路徑下敲入gradle -v命令,出現下面的響應就算安裝成功了

 

關於gradle的詳細命令和用法,大家可以參考下面的教程

http://wiki.jikexueyuan.com/project/gradle/

建議快速閱讀上面的教程后,我們來將gradle植入eclipse/myeclipse中

打開eclipse,進入marketplaces,搜索gradle,找到Gradle IDE Pack,經過博主測試這個插件是最好用的

安裝好Gradle IDE Pack插件后,重啟eclipse,新建一個最簡單的JAVA Project,或者試試Web Projec也可以

在項目根目錄下新建一個build.gradle文件,如圖所示

編輯build.gradle配置文件,示例如下:

apply plugin: "java"
apply plugin: "eclipse"

sourceCompatibility = 1.8
version = '1.0'

configurations {
    provided
}

sourceSets {
    main.compileClasspath += configurations.provided
    test.compileClasspath += configurations.provided
    test.runtimeClasspath += configurations.provided
}

repositories {
    mavenLocal()
    maven {url "http://maven.oschina.net/content/groups/public/"}    
    mavenCentral()
}

dependencies {
    compile "org.hibernate:hibernate-core:5.+"
    testCompile "junit:junit:4.7"
    provided "javax.servlet:javax.servlet-api:4.+"
}

//注意下面這個配置,新版本gradle如果不使用數組添加的話會導致eclipse頻繁報錯
eclipse.classpath.plusConfigurations += [configurations.provided]

保存build.gradle文件后,右鍵project,選擇configure,選擇convert to gradle project,為項目添加gradle特性

添加完gradle特性后,我們來讓eclipse將build.gradle中定義的幾個依賴包加入到項目中來

在這之前還需要配置一下Gradle IDE Pack插件,eclipse的window->preferencecs->Gradle,配置我們本地的gradle路徑

配置好了以后就萬事具備了,我們來試驗一下,如何將build.gradle文件中定義的依賴引入eclipse環境中

右擊project項目,選擇gradle,選擇Enable Dependency Management,讓插件來打開依賴管理

打開之后,仍然右鍵項目,gradle->Refresh Dependencies,刷新一下依賴列表

在后台,gradle將按照上述文件的定義,依次檢索我們系統中的maven本地倉庫,chinaos提供的中國鏡像倉庫,以及maven中央倉庫

將所需要的包下載到配置的gradle本地倉庫中,再引入到eclipse的classpath中,效果如下圖所示:

至此,關於gradle集成到eclipse的所有工作就結束了,項目編寫過程中,如果要繼續引入JAR包,就在build.gradle文件中添加

然后刷新一下gradle的依賴,就能實時添加到eclipse的環境中去了

 

最后着重講解一下provided的scope(有效依賴范圍),上一篇講到maven,其中配置依賴的scope常用的有下面幾種

compile:編譯,測試,打包時都需要依賴,比如spring、hibernate、struts等

test:測試時需要依賴,常見的有junit

provided:一般由容器提供,只有寫代碼時需要依賴,比如servlet

runtime:打包運行時需要依賴

轉移到gradle以后,gradle默認只為我們提供了四種scope,如下:

compile:編譯范圍依賴在所有的 classpath 中可用,同時它們也會被打包

runtime:依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如,你可能在編譯的時候只需要 JDBC API JAR,而只有在運行的時候才需要 JDBC 驅動實現

testCompile:測試期編譯需要的附加依賴

testRuntime:測試運行期需要

可以看到gradle默認並未提供類似provided的scope,那比如我們需要寫web project,則需要引入servlet包,而這時就比較麻煩

我們可以向eclipse的build path手工添加tomcat下的servlet包,但那樣未免顯得太low了,畢竟我們已經選擇使用項目構建工具來管理我們的JAR包了

別着急,gradle畢竟是使用一種編程語言來配置項目構建的,所以它的靈活性相當高,在上述的配置文件中,我們人為定義了一個provided的scope

並且將這個provided使用sourceSet集合定義了范圍,明確了在main目錄的compile期間需要依賴,在test目錄的編譯期間和運行期間需要依賴

言下之意就是在main目錄的運行期間不需要依賴嘍,也就是運行時不需要將此provided范圍的依賴打包

最后配合eclipse插件,向eclipse的classpath中添加了這一provided范圍,結果eclipse會將servlet引入到項目依賴中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM