Child pages
  • External system integration
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »


This page provides high-level overview of External System sub-system.

Table of contents


There are multiple project management systems (maven, gradle, sbt etc) and it's good to support them at the ide. Luckily, they all provide a similar set of facilities from the integration point of view:

  • build ide project from external system config (pom.xml, build.gradle etc);
  • provide a list of available tasks;
  • allow to execute particular task;
  • ...
    That means that we can separate external system-specific logic and general ide processing. 'External system' sub-system provides simple api for wrapping external system and extensible ide-specific processing logic.

Project management

Project data domain

External system wrapper is required to be able to build project info on the basis of the given external system config. That information is built using in terms of DataNode, Key and ProjectEntityData.

Here DataNode class is just a holder for the target data (data type is defined by the Key). Multiple DataNode objects might be organized in directed graph where every edge identifies parent-child relation.

For example, simple one-module project might look as below:

The ide provides a set of built-in Key_s and _ProjectEntityData_s but any external system integration or third-party plugin developer might enhance project data by defining her own _Key and ProjectEntityData and storing them at a child of appropriate DataNode.

  • No labels