1. 程式人生 > >Gradle 構建Java,Web專案以及包裝器

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' //包裝器被解壓後存放的相對路徑
}