從零開始,跟我一塊兒作jblog項目(二)Mavenjava
從零開始,跟我一塊兒作jblog項目(三)從Maven到Gradleweb
上一節講到項目構建工具Maven,對JAR包的管理不可謂不強大spring
博主在使用maven引入Spring框架時,瞭解到Spring推薦使用gradle工具來構建項目編程
百度了一下,發現Gradle也是一套很優秀的項目構建工具api
Gradle使用Groovy語言配置項目和依賴,在極大地提高靈活性和配置性以外,甚至配置代碼要比XML結構的POM文件少不少數組
鑑於我但願將jblog打形成一款modern的小型我的博客系統tomcat
而gradle的首頁上介紹本身爲Modern Open-Source Enterprise Build Automationapp
因此我決定將項目原型從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引入到項目依賴中。