idea插件开发

        IntelliJ 平台提供了一种在 IDE 中支持它们的机制,可以集成如Maven、Gradle这样的外部系统。一般外部系统都会提供自己的功能,这样就可以实现将外部系统的逻辑和IDE 处理分开。Intellij平台对外部子系统提供了一个简单的 API,用于包装外部系统元素和可扩展的 IDE 特定处理逻辑。

一、集成外部系统 1、项目管理 项目数据

        外部系统包装器需要能够在给定的外部系统配置的基础上构建项目信息,构建项目信息时可以使用DataNode、Key、ExternalEntityData等基类:

   DataNode只是目标数据的持有者(数据类型由Key定义)。多个DataNode对象可以组织在有向图中,其中每条边标识了父子关系。可以扩展IDE 提供的一组内置Key和ExternalEntityData类以实现定制化能力,ExternalEntityData负责将Key存储在适当的DataNode中。例如,一个简单的单模块项目可能如下所示:

 管理项目数据

        可以ProjectDataService使用处理基于外部系统配置构建的项目数据,它可以管理特定ExternalEntityData。例如,当我们要从外部模型导入项目时,我们可以从引用项目信息的顶层DataNode开始,然后使用相应的服务导入其数据,可以通过扩展com.intellij.externalProjectDataService实现。这样就可以将项目解析和管理分开,也就是先定义一组DataNode,在Key和ProjectDataServices使用时从定义组的DataNode中进行选择。

 从外部模型导入

        可参考IntelliJ 平台提供的用于从外部模型导入项目的API:

ProjectImportBuilderProjectImportProvider

        在实现时也可以基于模板方法模式构建的类,这样可以简化实现,然后扩展com.intellij.projectImportProvider。

AbstractExternalProjectImportBuilderAbstractExternalProjectImportProvider

        示例可以参考Gradle 的项目的导入实现:JavaGradleProjectImportProvider和JavaGradleProjectImportBuilder。

2、导入项目的自动刷新

        可以修改集成外部项目的配置为在修改外部项目的配置文件时自动刷新项目结构。

自动导入实现

        ExternalSystemAutoImportAware基类用于实现描述和跟踪外部系统管理ExternalSystemManager的设置文件。

     方法ExternalSystemAutoImportAware.getAffectedExternalProjectPath()方法经常被调用它用于返回控制权。

     CachingExternalSystemAutoImportAware类可能用于缓存,比如实现了ExternalSystemAutoImportAware的ExternalSystemManager可以持有一个字段new CachingExternalSystemAutoImportAware(new MyExternalSystemAutoImportAware()),并委托给ExternalSystemAutoImportAware.getAffectedExternalProjectPath()调用。

独立外部系统的自动导入

        一些外部系统比如Maven没有ExternalSystemManager,但它们也可以使用自动导入核心来跟踪设置文件中的更改。为此,实现ExternalSystemProjectAware描述用于跟踪的设置文件的接口和重新加载项目模型的操作。然后注册实例ExternalSystemProjectTracker以开始跟踪。

多个ExternalSystemProjectAware实例可以对应一个外部系统。它允许根据设置文件集(项目感知每个设置文件、每个模块、每个外部项目等)以不同方式执行项目重新加载。

设置重新加载的图标

        可以为每个外部系统指定重新加载通知的图标,实现com.intellij.externalIconProvider扩展或者直接在扩展类ExternalSystemIconProvider中重写reloadIcon()方法。

3、设置

        所有外部系统设置控件都由ExternalSystemSettingsControl实现, 包括一般的和


比丘资源网 » idea插件开发

发表回复

提供最优质的资源集合

立即查看 了解详情