天天看點

Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作

本文作者:黃少存,叩丁狼進階講師。原創文章,轉載請注明出處。
概要:目前很多企業都開始使用Gradle 來進行項目的管理,對于 Java Web 項目來說,war 插件的出現,讓項目部署隻需複制粘貼即可,那有沒有辦法讓 JavaWeb 項目的部署像PC 端軟體一樣輕按兩下某個執行檔案即可?有沒有辦法自動檢測項目的更新,自由編譯與加載進而友善開發人員呢?答案是yes,咱們可以使用 gretty 來實作這些功能.

gretty 支援熱部署,HTTPS,轉發,調試,自動化運作環境等諸多特性,支援jetty,tomcat 等多種 Servlet 容器.接下來咱們就來看下 gretty 最常用的特性和使用方法.

一. 在 Gradle 中安裝 gretty

gretty 安裝很簡單,不過需要下載下傳的依賴比較多,剛開始會慢點.

// build.gradle
// 1 apply 安裝
apply from: 'https://raw.github.com/gretty-gradle-plugin/gretty/master/pluginScripts/gretty.plugin'
// 2 plugins 安裝
plugins {
    id 'java'
    id 'war'
    id "org.akhikhl.gretty" version "2.0.0"
} 
           

以上配置二選一,都可以. 如果 gradle 版本比較舊,可按以下方式來安裝 gretty

// JDK6+,Gradle 1.10+
// build.gradle
buildscript {
    repositories {
         jcenter()
    }
    dependencies {
         classpath 'org.akhikhl.gretty:gretty:+'
    }
}
apply plugin: 'org.akhikhl.gretty'
           

二. 啟動項目常用操作

以上3種配置按 gradle 版本和需求選一種即可,然後可以用指令,gradle appRun 即可啟動.預設使用 jetty9 容器.

IDE 工具操作: idea -> Gradle -> 項目->Task->gretty下很多的操作,都是一個個的指令操作.

Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作

2.1 Run 系列

  • 1 編譯項目
  • 2 啟動 wab-app
    • gradle appRun/appRunDebug : 不依賴 war,按鈕停止
    • gradle appRunWar/appRunWarDebug : 依賴 war,按鈕停止
  • 3 idea : gradle -> task -> gretty
    Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作

2.2 Start 系列

  • 1 編譯項目
  • 2 使用新線程開啟服務,等待HTTP請求
    • gradle appStart/appStartDebug : 不依賴 war,用 gradle appStop 停止
    • gradle appRestart : 不依賴 war 重新開機
    • gradle appStartWar/appStartWarDebug : 依賴 war,用 gradle appStop 停止
  • 3 idea : gradle -> task -> gretty
    Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作

2.3 自選擇容器系列

強制使用 jetty/tomcat 容器,包含Run,Start,Stop,功能和 2.1-2.2 相同.

  • jettyRun / jettyRunDebug / jettyRunWar / jettyRunWarDebug
  • jettyStart / jettyStartDebug / jettyStartWar / jettyStartWarDebug
  • tomcatRun / tomcatRunDebug / tomcatRunWar / tomcatRunWarDebug
  • tomcatStart / tomcatStartDebug / tomcatStartWar / tomcatStartWarDebug
Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作

詳情檢視 : gretty task

三. 預設配置修改

3.1 修改預設Servlet 容器和其常用屬性

gretty {
    // 指定預設 Servlet 容器,支援 jetty7/8/9,jetty9.3/9.4(僅 jdk8),tomcat7/8
    servletContainer = 'tomcat8'
    // 修改伺服器端口
    httpPort = 80
    // 修改上下文路徑
    contextPath = '/'
}
           

其他預設配置修改: Gretty configuration

3.2 修改預設熱部署配置

Gretty 1.0.0+ 可使用 managedClassReload=true 來啟動即時重新加載已更改的class檔案.也可以手動修改熱部署的屬性.

常用屬性

  • scanInterval:監聽周期(秒),設定為 0 則關閉熱部署
  • scanDir:需要監聽的檔案夾
  • recompileOnSourceChange:監聽源碼變動,自動編譯
  • reloadOnClassChange:編譯的類發生改變,自動加載
  • reloadOnConfigChange:監聽 WEB-INF 或 META-INF 發生改變
  • reloadOnLibChange:監聽依賴發生改變

預設值

  • scanInterval = 1 // 每秒掃描加載 1 次
  • scanDir 預設值
    • ${projectdir}/src/main/java
    • ${projectdir}/src/main/groovy
    • ${projectdir}/src/main/resources
    • ${projectdir}/build/classes/main
    • ${projectdir}/build/resources/main
  • recompileOnSourceChange = true
  • reloadOnClassChange = true
  • reloadOnConfigChange = true
  • reloadOnLibChange = true

3.3 gretty 對 HTTPS 支援

生成自簽名證書,隻能在開發中使用

// https 配置
gretty {
    //httpEnabled = false  // 禁用http
    httpsEnabled = true    // 啟用https 生成自簽名證書
    // httpsPort = 443 預設是 8443
}
           

證書生成位置:

  • certificate -> “${project.buildDir}/ssl/cert”
  • key-store -> “${project.buildDir}/ssl/keystore”
  • key-store and key-manager passwords -> “${project.buildDir}/ssl/properties”

啟動通路 Q GFDSAZhttps 連接配接,注意,此處用的是gretty自簽名證書,并非指向?Certificate Authority (CA).可手動配置引用已經存在的證書.

gretty {
  sslKeyStorePath = '/some/path/keystore'
  sslKeyStorePassword = 'someKeystorePassword'
  sslKeyManagerPassword = 'someKeyManagerPassword'
  sslTrustStorePath = '/another/path/trust_keystore'
  sslTrustStorePassword = 'someTrustStorePassword'
}
           

四. 其他強大操作

4.1 gretty 的 debug 調試

在啟動項目常用操作中有很多的 xxxDebug 操作,這些都是 debug 方式運作.不過在 IDE 工具中直接運作沒有效果,在 idea 中可以使用遠端調試來實作 debug 調試.

  1. 輕按兩下某個 debug 任務,例: appStartDebug
  2. 配置 idea 遠端調試
  3. 啟動 idea 遠端調試
  4. debug 調試
4.1.1. 輕按兩下某個 debug 任務,例: appStartDebug\
Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作
4.1.2. 配置 idea 遠端調試
Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作
4.1.3. 啟動 idea 遠端調試
  • 選擇遠端調試并啟動
    Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作
  • 啟動後控制台資訊
    Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作
  • 等待項目啟動即可進行調試
    Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作

選擇控制台的 Run 頁籤,觀察項目啟動.啟動成功後就可以請求需要 debug 的資源了.

4.1.4. debug 調試
Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作

4.2 gretty 生成可執行項目

gretty 可以類 springboot 的項目打包功能,gretty 可以把一個項目導出成擁有Servlet 容器和啟動程式的項目.還可以将項目整體壓縮,操作如下.

gradle buildProject

生成可執行的項目,生成目錄:build/output/${project.name}

項目結構如下

Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作
  • conf : 包含伺服器的配置檔案
  • runner : 包含Servlet 容器的運作庫
  • starter : 包含Servlet 容器部署java程式需要的運作庫
  • webapps : 一個或多個你的 web 項目
gradle archiveProduct

生成可執行的項目,生成目錄:build/output/ p r o j e c t . n a m e , 打 包 項 目 為 z i p 包 . 存 在 : b u i l d / o u t p u t / {project.name},打包項目為zip包.存在:build/output/ project.name,打包項目為zip包.存在:build/output/{project.name}-${project.version}.zip

Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作

以上gretty 的常用配置和操作就到這裡.詳情可看插件doc

Gradle 進階-gretty一. 在 Gradle 中安裝 gretty二. 啟動項目常用操作三. 預設配置修改四. 其他強大操作