gradle java ide_使用Gradle构建Java项目
使用Gradle構(gòu)建Java項目
這個手冊將通過一個簡單的Java項目向大家介紹如何使用Gradle構(gòu)建Java項目。
我們將要做什么?
我們將在這篇文檔航中創(chuàng)建一個簡單的Java項目,然后使用Gradle構(gòu)建它。
需要準備什么?
預(yù)留15分鐘空閑時間
一件稱手的兵器(你最喜歡的IDE或者文本編輯器)
Java環(huán)境([JDK6](http://www.oracle.com/technetwork/java/javase/downloads/index.html”JDK”及以上版本)
如何完成這個手冊的內(nèi)容?
與大多數(shù)Spring的入門手冊一樣,你可以從頭開始一步步完成教程中的每一步工作,也可以跳過你已經(jīng)爛熟的基礎(chǔ)步驟。不管采用那種方式,你最后都會得到可工作的代碼。
如果要重頭開始,猛戳這里
如果要跳過基礎(chǔ)部分,需執(zhí)行以下操作:
下載并解壓本文檔相關(guān)源代碼,或者使用Git克隆一個:git clone https://github.com/spring-guides/gs-gradle.git
cd 進入?gs-gradle/initial
當你完成后,你可以使用gs-gradle/complete來檢查你的結(jié)果。
配置項目
首先需要配置一個項目給Gradle進行構(gòu)建。為了保證我們能專注于Gradle,目前最好創(chuàng)建最簡單的Java項目。
創(chuàng)建目錄結(jié)構(gòu)
在項目主目錄下,創(chuàng)建以下子目錄;在*nix系統(tǒng)下可以使用命令:mkdir -p src/main/java/hello
在src/main/java/hello目錄中,你可以創(chuàng)建任何Java類。為簡單起見并且為了與指南的其余部分保持一致,我們建議創(chuàng)建兩個雷HelloWorld.java和Greeter.java
src/main/java/hello/HelloWorld.java的源代碼:
src/main/java/hello/Greeter.java的源代碼:
安裝Gradle
到目前為止,我們已經(jīng)搭建了一個可以用來使用Gradle構(gòu)建的項目,現(xiàn)在到了安裝Gradle的時候了。
Gradle可以從http://www.gradle.org/downloads下載。我們僅需要下載Gradle的二進制發(fā)布包,所以在剛才提供的連接上尋找gradle-version-bin.zip文件(當然,也可以下載gradle-version-all.zip,它包含源代碼、文檔以已編譯代碼)
解壓縮下載的文件,并將解壓后目錄中的bin目錄加到環(huán)境變量中。
可以在命令行中執(zhí)行以下代碼來測試Gradle是否安裝成功
如果你很幸運,嘛事都OK,你會看到下面的welcome信息:
看到這個了,說明Gradle已經(jīng)成功安裝到系統(tǒng)中了。如果沒看到……再去看看Gradle的手冊先。
Gradle可以做些什么呢?
Gradle已經(jīng)安裝到系統(tǒng)上了,那么它可以做什么呢?在我們?yōu)轫椖縿?chuàng)建build.gradle文件之前,我們可以先問一下Gradle目前有哪些可用的任務(wù)(Tasks):
我們可以看到可用任務(wù)(Tasks)的列表。假設(shè)你執(zhí)行Gradle的目錄不存在build.gradle文件,你可以看到一些非常基礎(chǔ)的任務(wù),類似于:
盡管上面的列出的任務(wù)是可用的,但是如果沒有項目的構(gòu)建配置他們無法提供太多的價值。當配置了項目的build.gradle后,一些任務(wù)將變得非常有用。
如果在build.gradle中配置了插件(plugins)上面的任務(wù)列表會變得更長,最好在配置插件后使用gradle task看看那些任務(wù)是可用的。
剛說到配置插件,馬上我們就會配置一個插件來啟用基礎(chǔ)的Java構(gòu)建功能。
構(gòu)建Java代碼
先從簡單的開始,創(chuàng)建一個最簡單的只有一行的build.gradle文件:
別看只有一行配置,提供的能力可不是一點點哦。再執(zhí)行一下gradle task,我們可以看到任務(wù)列表中增加了一些內(nèi)容,比如:用來編譯java項目的任務(wù)、用來創(chuàng)建JavaDoc的任務(wù)、用來執(zhí)行單元測試的任務(wù)。
我們經(jīng)常使用的任務(wù)是gradle build,這個任務(wù)執(zhí)行以下操作:編譯、執(zhí)行單元測試、組裝Jar文件:
幾秒鐘以后,會看到”BUILD SUCCESSFUL”輸出,說明構(gòu)建已經(jīng)完成了。
可以到”build”目錄中查看構(gòu)建結(jié)構(gòu),在這個目錄中我們可以看到很多子目錄,其中有三個我們需要特別注意:
classes: 保存被編譯后的.class文件
reports: 構(gòu)建報告(如:測試報告)
lib: 組裝好的項目包(通常為:.jar或者.war文件)
classes目錄包含編譯生成的所有.class文件。執(zhí)行完編譯后,我們應(yīng)該可以在這里找到”HelloWorld.class”和”Greeter.class”。
到目前為止,我們項目并沒有申明任何依賴,所以”debendency_cache”目錄是空的。
“reports”目錄會包含項目單元測試的測試報告,當然,當前項目并未編寫任何單元測試,所以,也是空目錄。
“l(fā)ib”目錄包含打包后的jar或war文件,在后面的內(nèi)容中我們將學(xué)會如何定義JAR的名稱和版本號。
申明依賴
我們的Hello World例程非常簡單且不依賴于任何第三方庫,但是大多數(shù)應(yīng)用程序都會依賴第三方庫提供的通用或復(fù)雜的功能。
例如:假設(shè)我們希望更好的說”Hello World!”,我們希望應(yīng)用程序能同時輸出當前的日期和時間。當然這可以使用Java自身的日期和時間相關(guān)庫,但是我們可以使用”Joda Time”庫實現(xiàn)更有趣的功能。
首先,把HelloWorld.jara類修改成下面這樣:
這里我們的HelloWorld使用”Joda Time”的LocalTime類來獲取和輸出當前時間。
如果我們馬上執(zhí)行g(shù)radle build來構(gòu)建項目,構(gòu)建過程將會失敗,因為我們并未將”Joda Time”庫聲明為編譯時依賴庫。
首先,我們需要添加一些配置來定義第三方庫的來源:
上面的repositories定義,告訴構(gòu)建系統(tǒng)通過Maven中央庫來檢索項目依賴的軟件包,Gradle在很大程度上依賴Maven構(gòu)建工具的許多約定和基礎(chǔ)功能,包括使用Maven中央的庫來處理依賴關(guān)系。
現(xiàn)在我們可以使用第三方庫了,但現(xiàn)需要定義:
使用dependencies塊,我們定義了一條Joda Time的依賴項。這里,明確指定使用joda-time組內(nèi)的版本為2.2的joda-time庫。
另一個要注意的是,我們在這個依賴定義中指定依賴是compile范圍的。意思是,這個庫在編譯和運行時都需要(如果我們正在構(gòu)建WAR文件,這個文件會在/WEB-INF/libs目錄下)。另外值得注意的依賴類型包括:
providedCompile:在編譯期間需要這個依賴包,但在運行期間可能由容器提供相關(guān)組件(比如:Java Servlet API)
testCompile:依賴項僅在構(gòu)建和運行測試代碼時需要,在項目運行時不需要這個依賴項。
最后,我們來定義我們將生成的Jar文件的名字:
jar塊定義如何命名JAR文件,在上面的例子中,我們的JAR文件的名字為:gs-gradle-0.1.0.jar。
注:這個時候如果執(zhí)行g(shù)radle build,Gradle會花一些時間從Maven中央庫下載Joda Time包(具體下載時間依賴于你的網(wǎng)速)
使用Gradle Wrapper來構(gòu)建項目
Gradle Wrapper是開始一個Gradle構(gòu)建的首選方式。它包含了windows批處理以及OS X和Linux的Shell腳本。這些腳本允許我們在沒有安裝Gradle的系統(tǒng)上執(zhí)行Gradle構(gòu)建。要實現(xiàn)這個功能,我們需要在我們的build.gradle文件中增加以下代碼:
執(zhí)行下面代碼來下載和初始化wrapper腳本:
命令執(zhí)行完后,我們可以看到增加了一些新文件。有兩個文件在根目錄下,wapper的jar文件和properties文件在新增的gradle/wrapper目錄下。
現(xiàn)在Gradle Wrapper已經(jīng)可以用來構(gòu)建系統(tǒng)了。把這些文件增加到版本控制系統(tǒng)中,然后再任何時候、任何地方只要遷出這些文件就一個按照同樣的方式(與當前生成 Wrapper的Gradle版本一致)構(gòu)建系統(tǒng)。運行wrapper腳本來構(gòu)建系統(tǒng),跟我們之前橋的命令很像:
當?shù)谝淮瓮ㄟ^wrapper使用指定版本的Gradle構(gòu)建系統(tǒng)時,wrapper首先下載對應(yīng)版本的Gradle可執(zhí)行文件。Gradle Wrapper的所有文件在都可以被提交到版本庫中,所以,任何人都可以在沒有安裝Gradle的環(huán)境下使用相同版本的Gradle構(gòu)建系統(tǒng)。
在這個時候,我們需要重新構(gòu)建我們的代碼,構(gòu)建的結(jié)果目錄如下:
Jar文件中包含我們希望打包的Gretter和HelloWorld類。
需要注意的,即使我們聲明了joda-time依賴,但這里也沒有包括對應(yīng)的庫文件,而且生成的JAR文件也不是可運行JAR文件。
要想讓代碼可以運行,我們可以使用Gradle的application插件。增加以下內(nèi)容到build.gradle文件中。
現(xiàn)在我們的app可以執(zhí)行了。
為了能夠?qū)⒁蕾嚢惨砸黄鸫虬?#xff0c;比如,我們希望構(gòu)建一個WAR包,可以包含第三方組件的打包格式,我們可以使用Gradle的WAR插件。如果我們使用Spring Boot并且希望得到一個可執(zhí)行的JAR文件,我們可以使用spring-boot-gradle-plugin插件。在我們的示例中,gradle沒有足夠的信息來了解我們的目標系統(tǒng)。但是,目前介紹的內(nèi)容已經(jīng)足夠我們開始使用Gradle了。
下面是本文需要用的的build.gradle文件:
總結(jié)
以上是生活随笔為你收集整理的gradle java ide_使用Gradle构建Java项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 重置密码语音_数字语音信号处
- 下一篇: sklearn的train_test_s