運行配置管理

原文鏈接:
http://www.jetbrains.org/intellij/sdk/docs/basics/run_configurations/run_configuration_management.html

本文檔描述了用于運行配置的主要類和常見用例。

配置類型

實現(xiàn)任何運行配置類型的起點是ConfigurationType接口。當用戶打開“編輯運行配置 ”對話框并執(zhí)行“新增 ”操作時就會列出可用配置類型:

創(chuàng)建

這里的每種類型都可以表示為ConfigurationType的實例并可以像以下代碼注冊:

<configurationType implementation="org.jetbrains.plugins.gradle.service.execution.GradleExternalTaskConfigurationType" />

實現(xiàn)此接口的最簡單的方法是使用ConfigurationTypeBase基類。為了使用它,你需要繼承它并提供配置類型參數(shù)(ID、名稱、描述和圖標)作為構(gòu)造函數(shù)的參數(shù)。 除此之外,你需要調(diào)用addFactory()方法添加配置工廠。

配置工廠

所有運行配置都由特定ConfigurationType注冊的ConfigurationFactory創(chuàng)建。一個ConfigurationType可能有一個以上ConfigurationFactory

配置工廠

ConfigurationFactory的關(guān)鍵API和你需要實現(xiàn)的唯一方法是createTemplateConfiguration。 這個方法每個項目調(diào)用一次以創(chuàng)建模板運行配置。

所有實際運行配置(從工作空間加載或由用戶創(chuàng)建)都通過createConfiguration方法克隆模板來調(diào)用。

你可以通過重寫getIcon、getAddIcon、getName和默認設(shè)置方法自定義配置工廠的其它方面。這些額外設(shè)置是可選的。

運行配置

運行配置本身由RunConfiguration 接口表示。 這里的“運行配置 ”是一些可以執(zhí)行的命名配置,如同過main()啟動的應用類、測試、特定機器/端口的遠程調(diào)試。

下面是為特定項目定義的Java運行配置的示例:

運行配置

當實現(xiàn)運行配置時,你可能需要使用以下公共基類之一:

  • RunConfigurationBase 是一個通用基類,它包含運行配置的最基本的實現(xiàn);
  • LocatableConfigurationBase是一個通用基類,它應該用于通過RunConfigurationProducer從上下文創(chuàng)建的配置。它支持從設(shè)置自動生成配置的名稱,并跟蹤用戶是否更改了名稱;
  • ModuleBasedConfiguration是與特定模塊相關(guān)聯(lián)的配置的基類(例如,Java運行配置使用所選模塊來確定運行類路徑)。

設(shè)置編輯

常見運行配置設(shè)置可能通過以下方式修改:

RunConfiguration-specific UI。 它由SettingsEditor處理:

  • getComponent()方法由IDE調(diào)用并顯示運行配置指定UI;
  • resetFrom()用來丟棄通過該UI進行的所有未確認的用戶更改;
  • applyTo()用來確認更改,即復制當前UI狀態(tài)到目標設(shè)置對象。

持久化

運行配置可以持久化,即它們可以保存到文件系統(tǒng)并在IDE啟動時加載。這是通過相關(guān)RunConfiguration類的writeExternal()readExternal()方法執(zhí)行的。

IntelliJ平臺 存儲的實際配置由RunnerAndConfigurationSettings類的實例表示,它將運行配置與特定于運行程序的設(shè)置相結(jié)合,以及跟蹤某些運行配置標志,如"temporary"或"singleton"。

當你需要從代碼創(chuàng)建運行配置時,處理此類的實例將變得有必要。 你可以通過以下兩個步驟完成:

  • RunManager.createConfiguration()創(chuàng)建RunnerAndConfigurationSettings的實例;
  • RunManager.addConfiguration()通過添加配置到項目中的的共享配置列表或工作空間文件的本地配置列表實現(xiàn)持久化。

重構(gòu)支持

大多數(shù)運行配置在設(shè)置中包含類,文件或目錄的引用,當重命名或移動相應元素時通常需要更新這些設(shè)置。

為了支持這一點,你的運行配置需要實現(xiàn)RefactoringListenerProvider接口。

在你getRefactoringElementListener()方法的實現(xiàn)中,你需要檢查被重構(gòu)的元素是否是你的運行配置引用的,如果是,你返回一個RefactoringElementListener,根據(jù)元素的新名稱和位置更新你的配置 。

從上下文創(chuàng)建配置

許多插件支持從上下文自動創(chuàng)建運行配置,以便用戶只需單擊應用程序或測試類便可以使用正確的運行配置類型自動運行。 為了支持這一點,你需要提供RunConfigurationProducer的實現(xiàn)
接口并在plugin.xml中將其注冊為<runConfigurationProducer>。(請注意,此API已在IntelliJ IDEA 13中重新設(shè)計;舊的RuntimeConfigurationProducer是相同API的更混亂的版本)。

你需要實現(xiàn)的兩個主要方法是:

  • setupConfigurationFromContext接受你的類型的空配置和包含源代碼位置信息的ConfigurationContext(通過調(diào)用getLocation()getPsiLocation())。你的實現(xiàn)需要檢查此位置是否適用于你的配置類型(例如如果它在你支持的語言文件中)。如果不合適,你需要返回false,否則你需要將正確的上下文特定設(shè)置放入運行配置并返回true;
  • isConfigurationFromContext檢查您的類型的指定配置是否從指定的上下文創(chuàng)建。 實現(xiàn)此方法允許你重復使用適用于當前上下文的現(xiàn)有運行配置,而不是創(chuàng)建新的上下文,并且可能忽略用戶在現(xiàn)有上下文中執(zhí)行的定制。

注意:為了支持從上下文創(chuàng)建的配置的自動命名,你的配置應使用
LocatableConfigurationBase作為基類。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,590評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,111評論 25 709
  • 為什么你不停學習,卻依舊恐慌 L先生熱衷于買書,并且是付費知識平臺的重度愛好者。熱銷書幾乎逢新必買,各知識...
    魚擺擺喲閱讀 311評論 0 2
  • 什么是合格的員工: 有一個健康的身體,有健康的身體才能去完成各項工作任務。 就算工作沒有做到向老員工那樣盡善盡美,...
    王德彪閱讀 136評論 0 1

友情鏈接更多精彩內(nèi)容