翻譯|行業(yè)資訊|編輯:龔雪|2023-07-25 10:52:40.710|閱讀 104 次
概述:本文將為大家介紹IntelliJ IDEA目前很流行的構(gòu)建工具Gradle,歡迎下載最新版IDE體驗~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
IntelliJ IDEA,是java編程語言開發(fā)的集成環(huán)境。IntelliJ在業(yè)界被公認為最好的java開發(fā)工具,尤其在智能代碼助手、代碼自動提示、重構(gòu)、JavaEE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的。
如今構(gòu)建工具是一切項目的重要組成部分,而IntelliJ IDEA已與大多數(shù)構(gòu)建工具集成,目前流行的構(gòu)建工具是Gradle。在本文中,我們簡要介紹一下它與IntelliJ IDEA的集成歷史以及IDE內(nèi)實現(xiàn)的委托流程。
IntelliJ IDEA 的上市時間比其他構(gòu)建工具都要早,多年來一直提供其原生構(gòu)建系統(tǒng)并取得了巨大成功。 IntelliJ IDEA 構(gòu)建系統(tǒng)始終是編譯、運行測試和打包到 JAR 等任務(wù)的最佳選擇。
開發(fā)者通常主要關(guān)注編譯和運行測試,因此構(gòu)建流程的快速反饋周期至關(guān)重要,而我們則擅長執(zhí)行 JUnit 和 TestNG 測試以及增量編譯。
Maven 推出時表現(xiàn)出強大的項目依賴項管理能力,我們利用了它的項目結(jié)構(gòu),并將下載和解析依賴項委托給 Maven(但將構(gòu)建流程留給 IntelliJ IDEA)。
我們能夠在 IntelliJ IDEA 構(gòu)建系統(tǒng)中復(fù)制 Maven 的構(gòu)建流程,基于 Maven 項目模型,IntelliJ IDEA 可以用最少的額外步驟構(gòu)建項目。同時我們開發(fā)了有效檢索資源處理信息的機制,覆蓋從 pom.xml 生成 MANIFEST.mf 文件,進一步增強了構(gòu)建流程。
然后,我們將構(gòu)建流程的結(jié)果應(yīng)用到執(zhí)行測試的原生流程。
借助這項改進,我們得以涵蓋使用IntelliJ IDEA成功構(gòu)建Maven項目的所有必要場景。
繼續(xù)對Maven項目使用這種設(shè)置:從Maven檢索必要信息,使用原生IntelliJ IDEA機制構(gòu)建和啟動項目,甚至對Spring Boot和 Micronaut等流行工具也是如此。
當(dāng)Gradle在市場上推出時,它讓用戶能夠更好地自定義構(gòu)建流程并為其添加更多功能。
當(dāng)時決定開始采用與Maven類似的方式時,這意味著讓 Gradle 處理依賴項和檢索必要信息,而 IntelliJ IDEA 將編譯代碼、運行測試和構(gòu)建項目。
不過Gradle項目模型似乎有些過于靈活,您可以在構(gòu)建腳本中使用不同的源集或語言,例如Groovy、Scala或Kotlin。 另外,在構(gòu)建腳本中還可以編寫命令式代碼,為構(gòu)建系統(tǒng)提供所需行為和設(shè)置的直接指令。
例如可以在運行之前或測試運行之前啟動數(shù)據(jù)庫,另外與包含靜態(tài)配置的Maven相比,Gradle構(gòu)建腳本允許在資源處理期間執(zhí)行任意代碼,使用IntelliJ IDEA 功能很難重現(xiàn)此類配置。
顯然在標(biāo)準(zhǔn)操作方面表現(xiàn)出色,但自定義操作,例如處理資源和其他自定義任務(wù),對我們來說相當(dāng)難以控制和維護,最重要的是難以在 IntelliJ IDEA 構(gòu)建系統(tǒng)中復(fù)制。
因此,我們決定將測試運行委托給 Gradle:
當(dāng)您運行測試時,Gradle test任務(wù)將與屬于Gradle構(gòu)建周期的其他任務(wù)一起執(zhí)行,如下所示:
此外IntelliJ IDEA 還提供了額外功能,舉例來說,您需要運行的測試可能分布在不同源集中。 集成測試在一個源集中,而功能測試則在另一個源集中。
IntelliJ IDEA 能夠正確確定特定測試文件的測試任務(wù)及其位置,確保相關(guān)測試有效執(zhí)行。
此外IntelliJ IDEA還提供測試執(zhí)行級別的信息 – 方法、類或軟件包,例如Gradle 默認執(zhí)行源集中的所有測試。
但是IntelliJ IDEA會應(yīng)用篩選模式,并在 Run(運行)工具窗口中顯示消息,告知您執(zhí)行測試的確切位置:
總體而言,Gradle 的測試委托相當(dāng)成功。
下一步自然是將 Build(構(gòu)建)和 Run(運行)操作也委托給 Gradle,最終委托成為默認選擇。
現(xiàn)在,在應(yīng)用程序中使用 Run(運行)操作時,它會在 Gradle 上下文中使用并動態(tài)完成。
類似于現(xiàn)有 Gradle 應(yīng)用程序插件,我們正在創(chuàng)建運行主類的 JavaExec 類型的任務(wù),這可以確保應(yīng)用程序運行配置的最大正確性。
在委托模式下觸發(fā) Build(構(gòu)建)時,IntelliJ IDEA 會根據(jù)項目中被修改的模塊在 Gradle 中生成需要執(zhí)行的命令列表,您可以在BuildOutput中查看此信息:
IntelliJ IDEA 還可以檢測在不同模塊中修改的文件并僅構(gòu)建修改的部分。
目前,有兩種委托模式可供選擇:Gradle 和 IntelliJ IDEA。
還要注意在編譯流程中支持注解處理,不過當(dāng)代碼由IntelliJ IDEA 編譯時,有一些邊緣情況很難處理,例如注解處理程序在 Gradle 子項目中定義的情況。
這就是我們現(xiàn)在所處的階段,仍在嘗試以委托模式運行Spring和Micronaut運行配置,并在IDE中持續(xù)改進Gradle委托流程。
Jetbrains技術(shù)交流群(QQ):786598704 歡迎一起進群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)