本文檔描述了用于運行配置的主要類和常見用例。
配置類型
實現(xiàn)任何運行配置類型的起點是ConfigurationType接口。當用戶打開“編輯運行配置 ”對話框并執(zhí)行“新增 ”操作時就會列出可用配置類型:

這里的每種類型都可以表示為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作為基類。