国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Gradle 快速入門

2019-11-11 06:39:45
字體:
供稿:網(wǎng)友

大家應(yīng)該都經(jīng)歷過為了學(xué)習(xí)Hibernate、SPRing這樣的框架,需要引用大量Jar包而忙得焦頭爛額的經(jīng)歷吧。在java中管理Jar包確實(shí)是一件麻煩事情。而且有時(shí)候就算你電腦上一個(gè)項(xiàng)目配置的好好的,換一臺電腦馬上就不行了。因此就產(chǎn)生了項(xiàng)目構(gòu)建工具這么一個(gè)玩意,它能大大簡化我們構(gòu)建項(xiàng)目所需的成本。Maven就是這么一個(gè)項(xiàng)目構(gòu)建工具,它的配置文件是一個(gè)xml文件。這樣做的優(yōu)點(diǎn)就是配置易于理解,因?yàn)槭荴ML嘛。但是如果項(xiàng)目很大很復(fù)雜,那么Maven的局限性就體現(xiàn)出來了:XML會(huì)變得非常非常長,不利于閱讀;使用插件、執(zhí)行某些任務(wù)非常困難,因?yàn)閄ML擅長描述靜態(tài)信息,對動(dòng)態(tài)的行為無能為力。因此催生了一個(gè)嶄新的項(xiàng)目構(gòu)建工具Gradle。用了一段時(shí)間Gradle的我表示再也回不去Maven了。真的各方面體驗(yàn)都非常好。Gradle的唯一缺點(diǎn)大概就是網(wǎng)絡(luò)不甚流暢,可能需要梯子等工具。

安裝Gradle

我們可以到Gradle官方網(wǎng)站上下載Gradle。Gradle的文檔也在上面,雖然是英文的,但是我推薦大家還是有時(shí)間盡量看一看。對提高Gradle技能很有幫助。下載版本有兩個(gè),完整版(包括可執(zhí)行文件、文檔和源代碼)以及二進(jìn)制版(只有可執(zhí)行文件)。我推薦下載完整版的,因?yàn)橛性创a的支持,在Intellij IDEA這樣的智能IDE會(huì)提供Gradle腳本補(bǔ)全這樣的高級功能。下載完成之后將Gradle bin目錄添加到環(huán)境變量中。新開一個(gè)命令提示符執(zhí)行如下命令,

gradle --version

如果得到類似的輸出,那么就說明安裝成功了。

------------------------------------------------------------Gradle 3.3------------------------------------------------------------Build time: 2017-01-03 15:31:04 UTCRevision: 075893a3d0798c0c1f322899b41ceca82e4e134bGroovy: 2.4.7Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015JVM: 1.8.0_112 (Oracle Corporation 25.112-b15)OS: Windows 10 10.0 amd64

Gradle默認(rèn)情況下會(huì)使用當(dāng)前系統(tǒng)的編碼來處理文件。也就是說在我們中文Windows操作系統(tǒng)下,會(huì)使用GBK編碼。如果我們的項(xiàng)目使用UTF-8編碼,在使用Gradle的過程中就會(huì)出現(xiàn)亂碼情況。解決辦法可以參考我這篇文章Gradle項(xiàng)目中文亂碼的解決辦法。

基本使用

新建項(xiàng)目

隨便新建一個(gè)文件夾,打開命令提示符,切進(jìn)這個(gè)文件夾。然后執(zhí)行

gradle init

這樣Gradle就會(huì)為我們初始化必要的文件。文件列表如圖。.gradle是Gradle的臨時(shí)文件夾,不用管。gradle文件夾、gradlewgradlew.bat是Gradle Wrapper用到的文件,我們現(xiàn)在也不用管。需要關(guān)注的就是build.gradlesettings.gradle兩個(gè)文件。

Gradle新建項(xiàng)目結(jié)構(gòu)

對于一個(gè)完整的Gradle項(xiàng)目來說結(jié)構(gòu)應(yīng)該和下圖一樣。除了上圖初始化之后的幾個(gè)文件之外,還應(yīng)該有以下文件夾。

src/main/java,java源代碼文件夾src/main/resources,資源文件夾src/main/webapp,網(wǎng)絡(luò)內(nèi)容文件夾(如果這是個(gè)web項(xiàng)目)src/test/java,測試文件夾src/test/resources,測試資源文件夾

Gradle完整項(xiàng)目結(jié)構(gòu)

配置文件

settings.gradle文件是Gradle項(xiàng)目的配置文件,我們可以在這里配置項(xiàng)目的一些信息,例如項(xiàng)目名稱等等。以下是一個(gè)簡單的settings.gradle內(nèi)容。

rootProject.name = 'spring-web-mvc-sample'

如果是一個(gè)多項(xiàng)目的Gradle項(xiàng)目,那么settings.gradle還會(huì)包含一些include行,指定包含了哪些項(xiàng)目。

include 'shared'include 'api'include 'services:webservice'

構(gòu)建文件

下面來說說構(gòu)建文件build.gradle,這是我們主要配置的地方。下面是一個(gè)典型的build.gradle文件。每個(gè)部分的作用我都注釋出來了。習(xí)慣了XML文件的同學(xué)一定覺得這種文件很特別。Gradle是基于Groovy語言的,所以這里的文件其實(shí)就是Groovy形式的代碼文件。如果不會(huì)Groovy語言也不要緊,使用Gradle插件就可以滿足我們大部分的需求。當(dāng)然如果懂Groovy語言,那么就可以編寫復(fù)雜的自定義任務(wù)了。

// 項(xiàng)目配置group 'yitian.learn'version '1.0-SNAPSHOT'// 插件配置apply plugin: 'java'apply plugin: 'war'apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScr下面來根據(jù)注釋分別說說。首先是項(xiàng)目配置,配置該項(xiàng)目的組名(一般是公司或組織名)和版本號,和Maven中的組名、項(xiàng)目名和版本號一一對應(yīng)(Gradle項(xiàng)目的項(xiàng)目名在settings.gradle中)。源代碼兼容性指的是項(xiàng)目中源代碼的版本。對于我來說肯定永遠(yuǎn)是最新版的Java了。剩下幾個(gè)有點(diǎn)復(fù)雜,在后面慢慢討論。

配置項(xiàng)目

執(zhí)行任務(wù)

首先我們執(zhí)行一下命令gradle tasks。會(huì)發(fā)現(xiàn)列出了Gradle當(dāng)前所有可用的任務(wù),而且我們會(huì)發(fā)現(xiàn)有個(gè)任務(wù)就是tasks在Gradle中,任務(wù)是最基本的執(zhí)行單元。而且我們這些Gradle命令行其實(shí)就是執(zhí)行一些Gradle命令。每個(gè)任務(wù)還應(yīng)該有一個(gè)組名,表明任務(wù)的類別,沒有組名的任務(wù)Gradle默認(rèn)會(huì)將其隱藏。我們使用gradle tasks列出任務(wù)的時(shí)候Gradle也會(huì)將其以組名分類。要執(zhí)行某個(gè)任務(wù),語法如下:gradle 任務(wù)名

如果有使用過Maven的同學(xué),可以感受到Gradle執(zhí)行任務(wù)比Maven執(zhí)行命令方便多了。如果項(xiàng)目還是剛剛那個(gè)剛新建好什么都沒改的構(gòu)建文件。那么查看任務(wù)的時(shí)候應(yīng)該只能看到初始化和幫助任務(wù)。Gradle其他的功能需要插件來提供。

插件

上面那個(gè)配置文件給出了插件的配置方法。第一種是使用Gradle提供的一些插件,第二種是引用網(wǎng)絡(luò)上的插件。配置了插件之后,我們再次查看任務(wù),就會(huì)發(fā)現(xiàn)多出來很多任務(wù),這就是插件帶給我們的功能。

如果我們這是個(gè)Java項(xiàng)目,那就添加java插件,如果這是一個(gè)Java Web項(xiàng)目,那么還需要添加war插件。如果想要運(yùn)行該web項(xiàng)目,可以使用Gradle提供的jetty插件。但是這個(gè)插件在Gradle3.3中已經(jīng)過時(shí)了,Gradle推薦我們使用功能更加強(qiáng)大的Gretty插件。針對其他語言和平臺,Gradle也提供了相應(yīng)的插件例如android,這些插件的情況參見其相應(yīng)的文檔。

apply plugin: 'java'apply plugin: 'war'apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'

java和war插件給我們提供了很多新的任務(wù),方便我們開發(fā)。列舉一些常用的如下:

任務(wù)名 作用
build 打包和測試項(xiàng)目
test 測試項(xiàng)目
assemble 打包項(xiàng)目
war 打包成war文件
jar 打包成jar文件
clean 清理項(xiàng)目
javadoc 生成javadoc

Gretty插件最常用的就是tomcatRun任務(wù)了。它會(huì)啟動(dòng)一個(gè)tomcat實(shí)例來運(yùn)行我們的應(yīng)用,而且具有自動(dòng)更新類、資源,必要時(shí)重啟服務(wù)器的功能,非常方便和強(qiáng)大。Gretty插件的詳細(xì)配置參見其Github。

倉庫配置

Gradle默認(rèn)提供了兩個(gè)公共倉庫,mavenCentral和jcenter。我們可以隨意使用。當(dāng)然也可以同時(shí)引用多個(gè)。這種情況下Gradle會(huì)依次按照順序來搜索軟件包,如果都沒找到則構(gòu)建失敗。當(dāng)然我們也可以使用其他鏡像倉庫。下面的例子使用了阿里的鏡像倉庫,如果鏡像倉庫沒找到需要的軟件就會(huì)繼續(xù)在jcenter中尋找。

repositories { maven { url "http://maven.aliyun.com/nexus/content/groups/public/" } jcenter()}

依賴配置

Gradle的依賴配置和Maven兼容。所以Gradle的依賴項(xiàng)也由三個(gè)部分,組名,項(xiàng)目名和版本組成。所以一個(gè)依賴項(xiàng)可以寫成這樣。

compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'

依賴項(xiàng)還可以按照group:name:version形式簡寫,所以上面的依賴項(xiàng)可以縮成這樣。

compile 'org.hibernate:hibernate-core:3.6.7.Final'

和Maven一樣,Gradle依賴項(xiàng)也支持作用域,這在依賴項(xiàng)前面的動(dòng)詞上體現(xiàn)出來。常見的幾個(gè)作用域如下。

名稱 作用
compile 在項(xiàng)目編譯時(shí)需要
runtime 在運(yùn)行時(shí)需要,默認(rèn)情況下也包括編譯時(shí)依賴
testCompile 在測試代碼編譯時(shí)需要
testRuntime 在測試代碼運(yùn)行時(shí)需要,默認(rèn)情況下也包括編譯時(shí)依賴、運(yùn)行時(shí)依賴和測試編譯時(shí)依賴

查找依賴項(xiàng)的時(shí)候推薦到mvnrepository.com上查找,這個(gè)網(wǎng)站同時(shí)提供了Maven和Gradle等多種形式的依賴項(xiàng),非常方便。

定義變量

有時(shí)候可能需要在某處定義一個(gè)變量,然后在其余多處地方使用這個(gè)變量。在Gradle中需要在ext塊中定義變量,然后就可以在其他地方使用了。

// 額外的變量配置ext { springVersion = '4.3.6.RELEASE'}//依賴配置dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' compile group: 'org.springframework', name: 'spring-webmvc', version: springVersion}

進(jìn)階使用

Gradle Wrapper

現(xiàn)在可以說一說gradle/wrapper文件夾、gradlewgradlew.bat了。這幾個(gè)文件是Gradle Wrapper的文件。Gradle Wrapper能夠讓沒有安裝Gradle的電腦運(yùn)行Gradle項(xiàng)目。原理很簡單,通過一個(gè)腳本文件實(shí)現(xiàn),如果當(dāng)前沒有安裝某個(gè)版本的Gradle,腳本會(huì)自動(dòng)下載解壓。完成之后,當(dāng)我們通過gradlew命令運(yùn)行Gradle的時(shí)候,腳本會(huì)將命令參數(shù)傳遞給實(shí)際的gradle命令。Gradle Wrapper的使用方法和Gradle一樣,只不過把gradle換成了gradlew

gradle/wrapper文件夾對Gradle Wrapper來說很重要,該文件夾下的兩個(gè)文件gradle-wrapper.jargradle-wrapper.properties缺一不可,假如要上傳到源代碼管理這兩個(gè)文件也同樣需要上傳。在gradle-wrapper.properties中我們可以配置Gradle Wrapper的一些屬性。重點(diǎn)是最后一行,為了使用最新和最完整的Gradle功能,我們一般要修改它為gradle-3.3-all.zip(3.3是當(dāng)前最新的Gradle版本號)。

distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distszipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/distsdistributionUrl=https/://services.gradle.org/distributions/gradle-3.3-all.zip

IDE集成

如果使用Eclipse或者STS這樣基于Eclipse的IDE,點(diǎn)擊幫助->軟件市場,搜索BuildShip插件,安裝然后重啟Eclipse,然后就可以在新建項(xiàng)目的時(shí)候看到Gradle了。

如果使用Intellij IDEA,由于它自帶了Gradle支持。所以直接可以在新建項(xiàng)目的時(shí)候選擇Gradle項(xiàng)目,然后根據(jù)提示操作。對于Gradle項(xiàng)目來說推薦的IDE還是Intellij IDEA,因?yàn)閷radle的支持最好。

IDEA Gradle插件


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大英县| 共和县| 伊吾县| 塔城市| 团风县| 黄山市| 固原市| 洞口县| 安顺市| 凌云县| 木里| 浑源县| 麻城市| 微山县| 如皋市| 云霄县| 大竹县| 安国市| 灵宝市| 舒城县| 黔西县| 德惠市| 门头沟区| 沿河| 方山县| 京山县| 洪洞县| 临邑县| 沙河市| 铜川市| 太仓市| 寿阳县| 沽源县| 安新县| 凌海市| 禹州市| 托克逊县| 荆门市| 荆门市| 卢氏县| 蕉岭县|