IntelliJ Platform Plugin SDK Help

Project Model

This topic considers the concept of projects based on the IntelliJ Platform and related subjects, such as modules, libraries, facets, and SDKs.

Project

A project encapsulates all of a project's source code, libraries, and build instructions into a single organizational unit.

A project defines collections referred to as Modules and Libraries. Depending on the project's logical and functional requirements, a single-module or a multi-module project can be created.

Module

A module is a discrete unit of functionality that can be run, tested, and debugged independently. Modules include such things as source code, build scripts, unit tests, deployment descriptors, etc.

In a project, each module can use a specific Software Development Kit (SDK) or inherit the SDK defined at the project level. A module can depend on other modules of the project.

Library

A library is an archive of compiled code (such as JAR files) on which modules depend. The IntelliJ Platform supports three types of libraries: Module, Project, and Global Libraries.

SDK

Every project uses a Software Development Kit (SDK). For Java projects, SDK is referred to as JDK (Java Development Kit).

The SDK determines which API library is used to build the project. For a multi-module project, the project SDK is common for all modules within the project by default. Optionally, a project can configure an individual SDK for each module.

Facet

A facet represents a certain configuration, specific for a particular framework or technology associated with a module. A module can have multiple facets.

Configuration

The user can configure all entities listed above in the Project Structure dialog.

Use ProjectSettingsService to open related entries programmatically.

Last modified: 15 August 2024