在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 物聯(lián)網(wǎng)/ Gradle 守護(hù)進(jìn)程
問(wèn)題反饋
Gradle 插件
Scala 插件
Gradle 命令行的基本使用
任務(wù)詳述
安裝
概述
教程-雜七雜八
構(gòu)建環(huán)境
依賴(lài)管理基礎(chǔ)
使用 Gradle 圖形用戶界面
使用文件
CodeNarc 插件
Sonar 插件
Groovy 插件
Sonar Runner 插件
OSGi 插件
Ear 插件
Gradle 守護(hù)進(jìn)程
Java 插件
簡(jiǎn)介
構(gòu)建基礎(chǔ)
FindBugs 插件
Groovy 快速入門(mén)
JaCoCo 插件
PMD 插件
War 插件
Checkstyle 插件
日志
Java 構(gòu)建入門(mén)
Jetty 插件
從 Gradle 中調(diào)用 Ant
標(biāo)準(zhǔn)的 Gradle 插件
Web 工程構(gòu)建
JDepend 插件
編寫(xiě)構(gòu)建腳本

Gradle 守護(hù)進(jìn)程

走進(jìn)守護(hù)進(jìn)程

Gradle 守護(hù)進(jìn)程(有時(shí)也稱(chēng)為構(gòu)建守護(hù)進(jìn)程) 的目的是改善 Gradle 的啟動(dòng)和執(zhí)行時(shí)間。

我們準(zhǔn)備了幾個(gè)守護(hù)進(jìn)程非常有用的用例。對(duì)于一些工作流,用戶會(huì)多次調(diào)用 Gradle,以執(zhí)行少量的相對(duì)快速的任務(wù)。舉個(gè)例子:

  • 當(dāng)使用測(cè)試驅(qū)動(dòng)開(kāi)發(fā)時(shí),單元測(cè)試會(huì)被執(zhí)行多次。
  • 當(dāng)開(kāi)發(fā)一個(gè) web 應(yīng)用程序中,應(yīng)用程序會(huì)被組裝多次。
  • 當(dāng)發(fā)現(xiàn)構(gòu)建能做什么,在 gradle tasks 在哪里會(huì)執(zhí)行多次。

對(duì)以上各種工作流來(lái)說(shuō),讓調(diào)用 Gradle 的啟動(dòng)成本盡可能小會(huì)很重要。

此外,如果可以相對(duì)較快地建立 Gradle 模型,用戶界面可以提供一些有趣的功能。例如,該守護(hù)進(jìn)程可能用于以下情形:

  • 在 IDE 中的內(nèi)容幫助
  • 在 GUI 中的實(shí)時(shí)可視化構(gòu)建
  • 在 CLI 中的 tab 鍵完成

一般情況下,構(gòu)建工具的敏捷行為總是可以派上用場(chǎng)。如果你嘗試在你的本地構(gòu)建中使用守護(hù)進(jìn)程的話,它會(huì)變得讓你很難回到正常的 Gradle 使用。

Tooling API 在整個(gè)過(guò)程當(dāng)中都使用守護(hù)進(jìn)程。如,你無(wú)法在沒(méi)有守護(hù)進(jìn)程時(shí)正式地使用 Tooling API。這意味著當(dāng)您在 Eclipse 中使用 STS Gradle 或在 Intellij IDEA 中使用 Gradle 支持時(shí),您已經(jīng)在使用 Gradle 守護(hù)進(jìn)程。

未來(lái),該守護(hù)進(jìn)程還會(huì)提供更多的功能:

  • 敏捷的 up-to-date 檢查:使用本地文件系統(tǒng)修改通知(例如,通過(guò) jdk7 nio.2)預(yù)先執(zhí)行 up-to-date 分析。
  • 更快的構(gòu)建: 預(yù)評(píng)估項(xiàng)目,這樣當(dāng)用戶接下來(lái)調(diào)用 Gradle 時(shí),模型就準(zhǔn)備好了。
  • 我們提到了更快的構(gòu)建嗎?守護(hù)進(jìn)程可以預(yù)先下載依賴(lài)項(xiàng)或進(jìn)行快照依賴(lài)的新版本檢查。
  • 使用可用于編譯和測(cè)試的一個(gè)可復(fù)用線程池。例如,Groovy 和 Scala 的編譯器啟動(dòng)開(kāi)銷(xiāo)都很大。構(gòu)建守護(hù)進(jìn)程可以維持一個(gè)已下載的 Groovy 和 (或) Scala 進(jìn)程。
  • 預(yù)先執(zhí)行某些任務(wù),比如編譯。更快的反饋。
  • 快速、 準(zhǔn)確的 bash 的 tab 鍵完成。
  • Gradle 緩存的定期垃圾收集。

重用和失效的守護(hù)程序

基本的思想是, gradle 命令會(huì) fork 一個(gè)守護(hù)進(jìn)程,用于執(zhí)行實(shí)際的構(gòu)建。Gradle 命令的后續(xù)調(diào)用將重用該守護(hù)進(jìn)程,以避免啟動(dòng)開(kāi)銷(xiāo)。有時(shí)我們不能使用現(xiàn)有的守護(hù)進(jìn)程,是因?yàn)樗蚱?java 版本或 jvm 參數(shù)不同。關(guān)于 fork 一個(gè)完全新的守護(hù)進(jìn)程的具體細(xì)節(jié),請(qǐng)閱讀下面的專(zhuān)題。守護(hù)進(jìn)程將在空閑3小時(shí)后自動(dòng)失效。

以下是我們 fork 一個(gè)新的守護(hù)進(jìn)程的所有情況:

  • 如果該守護(hù)進(jìn)程當(dāng)前正忙于運(yùn)行一些作業(yè),將啟動(dòng)一個(gè)全新的守護(hù)進(jìn)程。
  • 對(duì)每個(gè) java home,我們會(huì) fork 一個(gè)單獨(dú)的守護(hù)進(jìn)程。所以即使有一些閑置的守護(hù)進(jìn)程等待構(gòu)建請(qǐng)求,但你碰巧通過(guò)不同的 java HOME 運(yùn)行構(gòu)建,那么一個(gè)全新的守護(hù)進(jìn)程將會(huì)被 fork。
  • 如果用于構(gòu)建的jvm的參數(shù)足夠不同,我們會(huì) fork 一個(gè)單獨(dú)的守護(hù)進(jìn)程。例如,如果某些系統(tǒng)屬性已經(jīng)更改,我們不會(huì) fork 一個(gè)新的守護(hù)進(jìn)程。然而,如果 -Xmx 內(nèi)存設(shè)置更改了,或一些基本的不變的系統(tǒng)屬性更改了 (例如 file.encoding),那么將 fork 新的守護(hù)進(jìn)程。
  • 在這一刻,守護(hù)進(jìn)程會(huì)被加上 Gradle 的特定版本號(hào)。這意味著即使一些守護(hù)進(jìn)程處于空閑狀態(tài),但您正在運(yùn)行的構(gòu)建與 Gradle 不同版本,也將啟動(dòng)一個(gè)新的守護(hù)進(jìn)程。這也有一種 --stop 命令行指令的結(jié)果: 當(dāng)運(yùn)行 --stop 時(shí),您僅可以停止以你的 Gradle 版本啟動(dòng)的守護(hù)進(jìn)程。

我們計(jì)劃在將來(lái)改進(jìn)守護(hù)進(jìn)程的 managing / pooling 的方法。

用法和故障排除

關(guān)于命令行的用法,可以看一下專(zhuān)題附錄 D, Gradle 命令行。如果你已經(jīng)厭倦反復(fù)使用相同的命令行選項(xiàng),可以看看構(gòu)建環(huán)境。這一章節(jié)包含了有關(guān)如何以一種“持久化”的方式配置某些行為(包括在默認(rèn)情況下打開(kāi)守護(hù)進(jìn)程)的信息。

以下是有關(guān) Gradle 守護(hù)進(jìn)程的故障排除的一些方面:

  • 如果你的構(gòu)建有問(wèn)題,請(qǐng)嘗試暫時(shí)禁用守護(hù)進(jìn)程 (您可以通過(guò)使用命令行開(kāi)關(guān)--no-daemon)。
  • 有時(shí)候,您可能想要通過(guò)--stop命令行選項(xiàng)或更有力的方式停止守護(hù)程序。
  • 默認(rèn)情況下位于 Gradle 用戶主目錄有一個(gè)守護(hù)進(jìn)程的日志文件。
  • 你可能想要以--foreground 模式啟動(dòng)守護(hù)程序,以觀察構(gòu)建是怎么執(zhí)行的。

配置守護(hù)進(jìn)程

可以配置一些守護(hù)進(jìn)程的設(shè)置,例如 JVM 參數(shù)、內(nèi)存設(shè)置或 Java home 目錄。有關(guān)更多信息請(qǐng)參閱構(gòu)建環(huán)境。

上一篇:Groovy 快速入門(mén)下一篇:PMD 插件