如果你並不熟悉Gradle,在繼續閱讀本文之前,你應當先閱讀以下文章。
- 《Gradle入門(1):簡介》幫助你學會安裝Gradle,描述了Gradle構建的基本概念,還描述瞭如何使用Gradle外掛在構建中新增功能。
- 《Gradle入門(2):第一個Java專案》描述瞭如何通過Gradle建立Java專案,並將其打包為可執行jar檔案。
- 《Gradle入門(3):依賴管理》描述瞭如何管理Gradle專案的依賴。
建立Web應用專案
如果要用 Java 和 Gradle 建立一個 Web 應用專案,我們首先需要建立一個 Java 專案,下面來看看該如何去做。
建立Java專案
我們可以使用Java外掛建立一個Java專案,通過新增以下程式碼行到build.gradle檔案中即可。
1 |
apply plugin: 'java' |
擴充套件閱讀:
Java外掛中加入了一些新的約定(例如:預設的目錄格式)、任務和構建屬性。如果你想獲悉這些內容,可以閱讀下面這篇文章。《Gradle入門(2):第一個Java專案》
我們繼續探索如何打包Web應用。
打包Web應用
在我們使用War外掛打包Web應用前,需要將其加入到構建中。在應用了War外掛後,build.gradle檔案如下:
1 2 |
apply plugin: 'java' apply plugin: 'war' |
War外掛在專案的目錄佈局下新增了一個新的目錄,加入了兩個新的依賴管理配置項,以及在專案中新增了一個新的任務。這些變化的詳細描述如下:
- War外掛在專案的目錄佈局下新增了src/main/webapp目錄,這個目錄包含Web應用的原始檔(CSS檔案、Javascript檔案、JSP檔案等)。
- War外掛加入了兩個新的依賴管理配置項providedCompile 和 providedRuntime.,這兩個配置項與compile 和 runtime 配置項的作用域相同,但是區別是這兩個配置項所屬的依賴不會被新增到WAR檔案中。
- War外掛也會在應用專案中新增war任務,這個任務會將WAR檔案置於build/libs目錄中。
即便War外掛在專案的目錄佈局下新增了src/main/webapp目錄,但它實際上並沒有被真正建立。如果我們需要這個目錄,那就必須自己來建立。
擴充套件閱讀:
如果你不知道compile和runtime配置項是什麼,你應該閱讀以下文章:《Gradle入門(3):依賴管理》
現在,我們可以在命令提示符下,通過gradle war命令打包Web應用。此時此刻,我們可以看到如下輸出:
1 2 3 4 5 6 7 8 9 |
> gradle war :compileJava :processResources :classes :war BUILD SUCCESSFUL Total time: 4.937 secs |
如果一切順利,我們應該可以在build/libs目錄下找到web-application.war檔案。
擴充套件閱讀:如果你需要關於War外掛或war任務的更多資訊,或者是,你想要覆蓋War外掛或war任務的預設配置,你可以多多關注以下網頁:
執行Web應用
我們可以使用Gretty在開發環境中執行Web應用,它支援Jetty和Tomcat,它也不會被Gradle缺少SLF4J繫結所導致的問題所困擾。我們繼續進行配置構建並使用Gretty執行Web應用。首先,必須配置構建指令碼的依賴。可以通過以下步驟完成:
1. 使用Bintray的JCenter Maven倉庫配置構建指令碼,進行依賴解析。
2. 將Gretty外掛的依賴加入到構建指令碼的classpath中。
擴充套件閱讀:如果你想了解更多關於在已經打包為jar的檔案上使用的二進位制外掛的技巧,你可以閱讀Gradle使用者手冊的以下章節:
第二步,應用Gretty外掛。做完這一步後,build.gradle檔案如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
buildscript { repositories { jcenter() } dependencies { classpath 'org.akhikhl.gretty:gretty:+' } } apply plugin: 'java' apply plugin: 'war' apply plugin: 'org.akhikhl.gretty' |
build.gradle的原始碼如下:
1 2 3 4 5 6 7 8 9 10 11 |
buildscript { repositories { jcenter() } dependencies { classpath 'org.akhikhl.gretty:gretty:+' } } apply plugin: 'java' apply plugin: 'war' |
第三步,按照以下步驟配置Gretty:
- 配置Gretty,當執行Web應用時,使用Jetty 9作為servlet容器。
- 配置Jetty,監聽8080埠。
- 配置Jetty,使用上下文路徑’/’執行Web應用。
build.gradle檔案的原始碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
buildscript { repositories { jcenter() } dependencies { classpath 'org.akhikhl.gretty:gretty:+' } } apply plugin: 'java' apply plugin: 'war' apply plugin: 'org.akhikhl.gretty' gretty { port = 8080 contextPath = '/' servletContainer = 'jetty9' } |
擴充套件閱讀:如果你想了解關於Gretty的更多內容,可以仔細看一下以下文件:
- Gretty Documentation: Getting Started
- Gretty Documentation: Gretty Configuration
- Gretty Documentation
現在,我們可以通過在命令提示符下執行以下命令,開啟或終止我們的Web應用:
- gradle appStart命令能執行Web應用。
- gradle appStop命令能終止Web應用。
總結
這篇教程教會了我們四項內容:
- 我們學會了,如果要使用預設配置,就必須把Web應用的原始檔置於 src/main/webapp 目錄下。
- 我們學會了,War外掛會新增兩個新的依賴項(providedCompile 和 providedRuntime)到構建中,還學會了這些依賴項是如何工作的。
- 我們學會了,將Web應用打包為WAR檔案。
- 我們學會了,在開發環境中執行Web應用。