Gradle 構建Java,Web專案以及包裝器
文章目錄
1.定製專案結構
Gradle預設專案結構 就是Maven的專案結構
- src/main/java放應用原始碼
- src/main/resources 放配置檔案
- src/test/java 放測試程式碼
在build.gradle中新增如下程式碼
//應用原始碼位置 sourceSets { main{ java { srcDirs =['src/java'] } } //測試原始碼檔案 test{ java{ srcDirs =['src/test'] } } }
如圖:這裡自定義的目錄
2.定製專案輸出路徑
在build.gradle中新增如下程式碼
buildDir="out" //這裡表示輸出路徑是out檔案,預設是build檔案,上圖也可見
3.配置和使用外部依賴
在build.gradle中新增如下程式碼
//倉庫 repositories { mavenCentral() } //依賴] dependencies { compileOnly 'org.projectlombok:lombok:1.18.2' testCompile group: 'junit', name: 'junit', version: '4.12' }
4.構建Java專案
4.1 gradle構建Java流程
在build.gradle中新增如下程式碼
步驟一:
apply plugin : 'java'
這一行程式碼就可以讓Gradle自己去找java的原始檔,預設是src/main/java目錄去找,如果要修改見上面的定製還有輸出目錄
**步驟二:**新建一個Java專案(需要主類一個包含Main方法)
**步驟三:**執行gradle build命令,這樣會生成一個build目錄包含class檔案和libs以及臨時檔案,我這裡是定製的輸出用的out目錄
步驟四: 執行命令java -cp out/classes/main com.vison.ToDoApp
執行main方法(com.vison.ToDoApp表示你的主類地址)這是通過執行class檔案來執行的
4.2 定製gradle的Java專案
在上面的基礎上,在build.gradle中新增如下程式碼
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8 //設定Java版本編譯相容1.8
//指定main位置
jar{
manifest {
attributes 'Main-class':'com.vison.ToDoApp'
}
}
然後重新gradle clean ,gradle build 會看到專案會生成帶有版本號的jar檔案
可以通過java -jar out/libs/ToDoGradle-1.0-SNAPSHOT.jar 包可以執行檔案中的main方法。
5.構建Web專案
5.1使用war外掛
**步驟一:**在build.gradle中新增如下程式碼
//war外掛,表示生成一個war包, war應用預設目錄是src/main/webapp(js.css.html檔案目錄)
apply plugin : 'war'
//依賴,用原始的servlet,這裡注意providedCompile ,runtime 表示configuration,和maven中的scope雷同
dependencies {
providedCompile 'javax.servelt:servlet-api:2.5'
runtime 'javax.servlet:jstl:1.1.2'
}
**步驟二:**構建web專案
使用預設的目錄如下:
**步驟二:**執行命令gradle build會在build/libs中生成war包(war外掛來執行的)war包任務將目錄src/main/webapp內容原封不動的拷貝到WAR包的根目錄下,編譯後的class檔案最終是會放到WEB-INF/classes中,通過依賴定義的包會放在WEB-INF/lib中。如下WAR包中的檔案
5.2定製war外掛
如果我們不是用預設的web專案目錄,如下使用這個目錄結構
靜態資源放在static中,原來的webapp改為了webfiles目錄
步驟:在build.gradle中新增如下程式碼
webAppDirName='webfiles' //修改web應用源目錄位置
war{
from 'static' //將static目錄新增到WAR根目錄下
}
5.3 使用嵌入式容器Jetty執行
**步驟一:**在build.gradle中新增如下程式碼
apply plugin : ‘jetty’
步驟二: 執行命令gradle jetty run 就可以了
5.4 定製Jetty外掛
修改埠和上下文路徑
jettyRun{
httpPort =9090
contextPath='toDoList' //這個表示新的專案地址名訪問的地址http://localhost:9090/toDoList 訪問該專案
6. Gradle包裝器
由包裝器支援的gradle指令碼非常適合自動化釋出過程的一部分,比如持續整合。主要是避免團隊開發gradle版本不一樣,其他隊員從程式碼倉庫中上拉取程式碼要讓gradle版本在本地開發相同。
6.1 配置包裝器
步驟一: 在build.gradle中新增如下程式碼
task wrapper(type:Wrapper){
gradleVersion ='4.4' //gradle版本
}
步驟二: 本地執行命令 gradle wrapper
這個命令會預設從Gradle的微類庫中下載gradle包並解壓
另外下載完了你的本地會生成在$HOME_DIR/.gradle/wrapper/dists目錄,你的專案中也會有一個wrapper目錄;還有gradlew 和gradlew.bat兩個指令碼檔案。
- gradlew 這個是*nix的執行包裝器shell指令碼
- gradlew.bat這個windows的執行包裝器指令碼
6.2 使用包裝器
使用上面這兩個指令碼例如windows環境執行 gradlew.bat jettyrun
linux環境中 執行命令gradlew.bat jettyrun執行jetty容器
6.3 定製包裝器
通常公司都是用自己的內網,所以gradle可以定製url下載,當然還有很多特性可以定製可以檢視下官網內容。
task wrapper(type:Wrapper){
gradleVersion ='4.4' //請求的版本
distributionUrl ='http://myenterprise.com/gradle/dists' //獲取gradle包裝器的url
distributionPath = 'gradle-dists' //包裝器被解壓後存放的相對路徑
}