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