运行配置管理

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

本文档描述了用于运行配置的主要类和常见用例。

配置类型

实现任何运行配置类型的起点是ConfigurationType接口。当用户打开“编辑运行配置 ”对话框并执行“新增 ”操作时就会列出可用配置类型:

创建

这里的每种类型都可以表示为ConfigurationType的实例并可以像以下代码注册:

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

实现此接口的最简单的方法是使用ConfigurationTypeBase基类。为了使用它,你需要继承它并提供配置类型参数(ID、名称、描述和图标)作为构造函数的参数。 除此之外,你需要调用addFactory()方法添加配置工厂。

配置工厂

所有运行配置都由特定ConfigurationType注册的ConfigurationFactory创建。一个ConfigurationType可能有一个以上ConfigurationFactory

配置工厂

ConfigurationFactory的关键API和你需要实现的唯一方法是createTemplateConfiguration。 这个方法每个项目调用一次以创建模板运行配置。

所有实际运行配置(从工作空间加载或由用户创建)都通过createConfiguration方法克隆模板来调用。

你可以通过重写getIcongetAddIcongetName和默认设置方法自定义配置工厂的其它方面。这些额外设置是可选的。

运行配置

运行配置本身由RunConfiguration 接口表示。 这里的“运行配置 ”是一些可以执行的命名配置,如同过main()启动的应用类、测试、特定机器/端口的远程调试。

下面是为特定项目定义的Java运行配置的示例:

运行配置

当实现运行配置时,你可能需要使用以下公共基类之一:

  • RunConfigurationBase 是一个通用基类,它包含运行配置的最基本的实现;
  • LocatableConfigurationBase是一个通用基类,它应该用于通过RunConfigurationProducer从上下文创建的配置。它支持从设置自动生成配置的名称,并跟踪用户是否更改了名称;
  • ModuleBasedConfiguration是与特定模块相关联的配置的基类(例如,Java运行配置使用所选模块来确定运行类路径)。

设置编辑

常见运行配置设置可能通过以下方式修改:

RunConfiguration-specific UI。 它由SettingsEditor处理:

  • getComponent()方法由IDE调用并显示运行配置指定UI;
  • resetFrom()用来丢弃通过该UI进行的所有未确认的用户更改;
  • applyTo()用来确认更改,即复制当前UI状态到目标设置对象。

持久化

运行配置可以持久化,即它们可以保存到文件系统并在IDE启动时加载。这是通过相关RunConfiguration类的writeExternal()readExternal()方法执行的。

IntelliJ平台 存储的实际配置由RunnerAndConfigurationSettings类的实例表示,它将运行配置与特定于运行程序的设置相结合,以及跟踪某些运行配置标志,如"temporary"或"singleton"。

当你需要从代码创建运行配置时,处理此类的实例将变得有必要。 你可以通过以下两个步骤完成:

  • RunManager.createConfiguration()创建RunnerAndConfigurationSettings的实例;
  • RunManager.addConfiguration()通过添加配置到项目中的的共享配置列表或工作空间文件的本地配置列表实现持久化。

重构支持

大多数运行配置在设置中包含类,文件或目录的引用,当重命名或移动相应元素时通常需要更新这些设置。

为了支持这一点,你的运行配置需要实现RefactoringListenerProvider接口。

在你getRefactoringElementListener()方法的实现中,你需要检查被重构的元素是否是你的运行配置引用的,如果是,你返回一个RefactoringElementListener,根据元素的新名称和位置更新你的配置 。

从上下文创建配置

许多插件支持从上下文自动创建运行配置,以便用户只需单击应用程序或测试类便可以使用正确的运行配置类型自动运行。 为了支持这一点,你需要提供RunConfigurationProducer的实现
接口并在plugin.xml中将其注册为<runConfigurationProducer>。(请注意,此API已在IntelliJ IDEA 13中重新设计;旧的RuntimeConfigurationProducer是相同API的更混乱的版本)。

你需要实现的两个主要方法是:

  • setupConfigurationFromContext接受你的类型的空配置和包含源代码位置信息的ConfigurationContext(通过调用getLocation()getPsiLocation())。你的实现需要检查此位置是否适用于你的配置类型(例如如果它在你支持的语言文件中)。如果不合适,你需要返回false,否则你需要将正确的上下文特定设置放入运行配置并返回true;
  • isConfigurationFromContext检查您的类型的指定配置是否从指定的上下文创建。 实现此方法允许你重复使用适用于当前上下文的现有运行配置,而不是创建新的上下文,并且可能忽略用户在现有上下文中执行的定制。

注意:为了支持从上下文创建的配置的自动命名,你的配置应使用
LocatableConfigurationBase作为基类。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,974评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,705评论 25 709
  • 为什么你不停学习,却依旧恐慌 L先生热衷于买书,并且是付费知识平台的重度爱好者。热销书几乎逢新必买,各知识...
    鱼摆摆哟阅读 297评论 0 2
  • 什么是合格的员工: 有一个健康的身体,有健康的身体才能去完成各项工作任务。 就算工作没有做到向老员工那样尽善尽美,...
    王德彪阅读 124评论 0 1