摘要:要從頭開始,請繼續使用構建。文件夾應包含項目運行單元測試的報告。由于該項目尚未進行任何單元測試,因此該報告無效。使用構建項目是啟動構建的首選方式。現在可用于構建項目。概要恭喜您現在已經創建了一個簡單而有效的構建文件,用于構建項目。
本指南將引導您使用Gradle構建一個簡單的Java項目。
你要構建什么
您將創建一個簡單的應用程序,然后使用Gradle構建它。
你需要什么
大約15分鐘
最喜歡的文本編輯器或IDE
JDK 6或更高版本
如何完成本指南
與大多數Spring入門指南一樣,您可以從頭開始并完成每個步驟,或者您可以繞過您已熟悉的基本設置步驟。無論哪種方式,您最終都會使用工作代碼。
要從頭開始,請繼續使用Gradle構建。
要跳過基礎知識,請執行以下操作:
下載并解壓縮本指南的源存儲庫,或使用Git克隆它:
git clone https://github.com/spring-guides/gs-gradle.git
進入gs-gradle/initial
跳轉到安裝Gradle。
完成后,可以根據gs-gradle/complete中的代碼檢查結果。
設置項目
首先,您要為Gradle建立一個Java項目。為了保持對Gradle的關注,讓項目盡可能簡單。
創建目錄結構
在您選擇的項目目錄中,創建以下子目錄結構;例如,在*nix系統上使用mkdir -p src/main/java/hello:
└── src └── main └── java └── hello
在src/main/java/hello目錄中,您可以創建所需的任何Java類。為了簡單起見并與本指南的其余部分保持一致,Spring建議您創建兩個類:HelloWorld.java和Greeter.java。
src/main/java/hello/HelloWorld.java
package hello; public class HelloWorld { public static void main(String[] args) { Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); } }
src/main/java/hello/Greeter.java
package hello; public class Greeter { public String sayHello() { return "Hello world!"; } }
安裝Gradle
現在您有了一個可以使用Gradle構建的項目,您就可以安裝Gradle了。
強烈建議使用安裝程序:
SDKMAN
Homebrew(brew install gradle)
最后,如果這些工具都不適合您的需要,您可以從http://www.gradle.org/downloads下載二進制文件。只有二進制文件是必需的,所以要查找到gradle-version-bin.zip 的鏈接。(您也可以選擇gradle-version-all.zip以獲取源代碼和文檔以及二進制文件。)
將文件解壓縮到您的計算機,然后將bin文件夾添加到您的路徑中。
要測試Gradle安裝,請從命令行運行Gradle:
gradle
如果一切順利,您會看到一條歡迎信息:
:help Welcome to Gradle 2.3. To run a build, run gradle... To see a list of available tasks, run gradle tasks To see a list of command-line options, run gradle --help BUILD SUCCESSFUL Total time: 2.675 secs
您現在安裝了Gradle。
了解Gradle可以做些什么
現在已經安裝了Gradle,看看它能做什么。在為項目創建build.gradle文件之前,您可以詢問它可用的任務:
gradle tasks
您應該看到可用任務列表。假設您在沒有build.gradle文件的文件夾中運行Gradle ,您將看到一些非常基本的任務,例如:
:tasks == All tasks runnable from root project == Build Setup tasks setupBuild - Initializes a new Gradle build. [incubating] == Help tasks dependencies - Displays all dependencies declared in root project "gs-gradle". dependencyInsight - Displays the insight into a specific dependency in root project "gs-gradle". help - Displays a help message projects - Displays the sub-projects of root project "gs-gradle". properties - Displays the properties of root project "gs-gradle". tasks - Displays the tasks runnable from root project "gs-gradle". To see all tasks and more detail, run with --all. BUILD SUCCESSFUL Total time: 3.077 secs
即使這些任務可用,但如果沒有項目構建配置,它們也不會提供太多價值。當你充實build.gradle文件時,一些任務會更有用。在添加build.gradle插件時,任務列表會增加,因此您偶爾會想要再次運行任務以查看可用的任務。
說到添加插件,接下來添加一個啟用基本Java構建功能的插件。
構建Java代碼
從簡單的build.gradle開始,在本指南開頭創建的中創建一個非常基本的文件。只給它一行
apply plugin: "java"
構建配置中的這一行帶來了大量功率。再次運行gradle tasks,您會看到添加到列表中的新任務,包括構建項目,創建JavaDoc和運行測試的任務。
您將經常使用gradle build。此任務將代碼編譯,測試并組裝到JAR文件中。你可以像這樣運行它:
gradle build
幾秒鐘后,“BUILD SUCCESSFUL”表示構建已完成。
要查看構建工作的結果,請查看構建文件夾。在那里你會找到幾個目錄,包括這三個值得注意的文件夾:
classes:該項目已編譯的.class文件。
reports:構建生成的報告(例如測試報告)。
libs:匯編的項目庫(通常是JAR和/或WAR文件)。
classes文件夾具有通過編譯Java代碼生成的.class文件。具體來說,您應該找到HelloWorld.class和Greeter.class。
此時,項目沒有任何庫依賴項,因此dependency_cache文件夾中沒有任何內容。
reports文件夾應包含項目運行單元測試的報告。由于該項目尚未進行任何單元測試,因此該報告無效。
libs文件夾應包含以項目文件夾命名的JAR文件。再往下,您將看到如何指定JAR的名稱及其版本。
聲明依賴項
簡單的Hello World示例是完全獨立的,不依賴于任何其他庫。但是,大多數應用程序依賴于外部庫來處理常見或復雜的功能。
例如,假設除了說“Hello World!”之外,您還希望應用程序打印當前日期和時間。您可以使用本機Java庫中的日期和時間工具,但是通過使用Joda Time庫可以使事情變得更有趣。
首先,將HelloWorld.java更改為如下所示:
package hello; import org.joda.time.LocalTime; public class HelloWorld { public static void main(String[] args) { LocalTime currentTime = new LocalTime(); System.out.println("The current local time is: " + currentTime); Greeter greeter = new Greeter(); System.out.println(greeter.sayHello()); } }
這里HelloWorld使用Joda Time的LocalTime類來獲取和打印當前時間。
如果您現在運行gradle build來構建項目,那么構建將失敗,因為您沒有在構建中將Joda Time聲明為編譯依賴項。
對于初學者,您需要為第三方庫添加源。
repositories { mavenCentral() }
repositories塊指示構建應從Maven Central存儲庫解析其依賴關系。Gradle嚴重依賴Maven構建工具建立的許多約定和工具,包括使用Maven Central作為庫依賴關系源的選項。
現在我們已經為第三方庫做好了準備,讓我們宣布一些。
sourceCompatibility = 1.8 targetCompatibility = 1.8 dependencies { compile "joda-time:joda-time:2.2" testCompile "junit:junit:4.12" }
使用dependencies塊,您可以為Joda Time聲明一個依賴項。具體來說,你在joda-time組中要求(從右到左閱讀)joda-time庫2.2版。
關于這種依賴關系的另一個注意事項是它是一個compile依賴項,表明它應該在編譯時可用(如果你正在構建一個WAR文件,包含在WAR的/WEB-INF/libs文件夾中)。其他值得注意的依賴類型包括:
providedCompile。編譯項目代碼所需的依賴項,但是運行代碼的容器將在運行時提供該依賴項(例如,Java Servlet API)。
testCompile。用于編譯和運行測試的依賴項,但不是構建或運行項目的運行時代碼所必需的。
最后,讓我們指定JAR工件的名稱。
jar { baseName = "gs-gradle" version = "0.1.0" }
jar塊指定如何命名JAR文件。在這種情況下,它將呈現gs-gradle-0.1.0.jar。
現在,如果您運行gradle build,Gradle應該從Maven Central存儲庫解析Joda Time依賴項,并且構建將成功。
使用Gradle Wrapper構建項目
Gradle Wrapper是啟動Gradle構建的首選方式。它由Windows的批處理腳本和OS X和Linux的shell腳本組成。這些腳本允許您運行Gradle構建,而無需在系統上安裝Gradle。這曾經是添加到您的構建文件中的東西,但它已被折疊到Gradle中,因此不再需要。相反,您只需使用以下命令。
$ gradle wrapper --gradle-version 2.13
完成此任務后,您會注意到一些新文件。這兩個腳本位于文件夾的根目錄中,而包裝jar和屬性文件已添加到新gradle/wrapper文件夾中。
└──└── gradlew └── gradlew.bat └── gradle └── wrapper └── gradle-wrapper.jar └── gradle-wrapper.properties
Gradle Wrapper現在可用于構建項目。將它添加到您的版本控制系統,克隆項目的每個人都可以構建它。它可以與安裝的Gradle版本完全相同的方式使用。運行包裝器腳本來執行構建任務,就像之前一樣:
./gradlew build
第一次運行指定版本的Gradle的包裝器時,它會下載并緩存該版本的Gradle二進制文件。Gradle Wrapper文件旨在提交源代碼控制,以便任何人都可以構建項目,而無需先安裝和配置特定版本的Gradle。
在此階段,您將構建代碼。你可以在這里看到結果:
build ├── classes │ └── main │ └── hello │ ├── Greeter.class │ └── HelloWorld.class ├── dependency-cache ├── libs │ └── gs-gradle-0.1.0.jar └── tmp └── jar └── MANIFEST.MF
包括的是兩個預期類文件Greeter和HelloWorld,以及JAR文件。快速瀏覽一下:
$ jar tvf build/libs/gs-gradle-0.1.0.jar 0 Fri May 30 16:02:32 CDT 2014 META-INF/ 25 Fri May 30 16:02:32 CDT 2014 META-INF/MANIFEST.MF 0 Fri May 30 16:02:32 CDT 2014 hello/ 369 Fri May 30 16:02:32 CDT 2014 hello/Greeter.class 988 Fri May 30 16:02:32 CDT 2014 hello/HelloWorld.class
類文件被捆綁在一起。值得注意的是,即使您將joda-time聲明為依賴項,此處也不包含該庫。并且JAR文件也不可運行。
為了使這段代碼可以運行,我們可以使用gradle的application插件。將其添加到您的build.gradle文件中。
apply plugin: "application" mainClassName = "hello.HelloWorld"
然后你可以運行該應用程序!
$ ./gradlew run :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :run The current local time is: 16:16:20.544 Hello world! BUILD SUCCESSFUL Total time: 3.798 secs
捆綁依賴關系需要更多思考。例如,如果我們構建一個WAR文件,一種通常與第三方依賴關系打包相關的格式,我們可以使用gradle的WAR插件。如果您使用的是Spring Boot并且想要一個可運行的JAR文件,那么spring-boot-gradle-plugin非常方便。在這個階段,gradle對您的系統不了解,無法做出選擇。但就目前而言,這應該足以開始使用gradle了。
要完成本指南的內容,這里是完整的build.gradle文件:
apply plugin: "java" apply plugin: "eclipse" apply plugin: "application" mainClassName = "hello.HelloWorld" // tag::repositories[] repositories { mavenCentral() } // end::repositories[] // tag::jar[] jar { baseName = "gs-gradle" version = "0.1.0" } // end::jar[] // tag::dependencies[] sourceCompatibility = 1.8 targetCompatibility = 1.8 dependencies { compile "joda-time:joda-time:2.2" testCompile "junit:junit:4.12" } // end::dependencies[] // tag::wrapper[] // end::wrapper[]
此處嵌入了許多開始/結束注釋。這使得可以將構建文件的位提取到本指南中,以獲得上述詳細說明。您在生產構建文件中不需要它們。
概要
恭喜!您現在已經創建了一個簡單而有效的Gradle構建文件,用于構建Java項目。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73181.html
摘要:時間年月日星期二說明本文部分內容均來自慕課網。項目一個項目代表一個正在構建的組件比如一個文件,當構建啟動后,會基于實例化一個類,并且能夠通過變量使其隱式可用。任務動作定義了一個最小的工作單元。 時間:2017年05月16日星期二說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:無個人學習源碼:https://github.com/zccod...
摘要:記得在中支持多個子項目的構建方法同樣的在中也會支持多項目的構建方法還記得在中如何配置多項目工程嗎這里回憶一下首先我們需要一個父元素文件比如這樣而在中我們并不需要指定父元素的標簽我們只需要編寫好對應的文件夾名稱,并且將文件夾名稱和對 記得在maven中支持多個子項目的構建方法,同樣的在gradle 中也會支持多項目的構建方法 還記得在maven中如何配置多項目工程嗎, 這里回憶一下 首先...
閱讀 2483·2023-04-25 19:24
閱讀 1699·2021-11-11 16:54
閱讀 2832·2021-11-08 13:19
閱讀 3546·2021-10-25 09:45
閱讀 2551·2021-09-13 10:24
閱讀 3276·2021-09-07 10:15
閱讀 4013·2021-09-07 10:14
閱讀 2949·2019-08-30 15:56