Skip to content

This topic considers the concept of projects based on the Consulo and related subjects, such as modules, libraries, and SDK.

Project and Its Components ​

This section briefly discusses the Consulo project structure, project components, and related terms.

Project ​

In the Consulo, a project encapsulates all of a project's source code, libraries, and build instructions into a single organizational unit. Everything done using the Consulo SDK is done within the context of a project. A project defines collections referred to as modules and libraries. Depending on the project's logical and functional requirements, you can create a single-module or a multi-module project.

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 SDK or inherit the SDK defined at the project level (see the SDK section below in this document). 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 Consulo supports two types of libraries:

  • Module Library: the library classes are visible only in this module.
  • Project Library: the library classes are visible within the project.

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. If a project is multi-module, the project SDK is common for all modules within the project by default. Optionally, a project can configure an individual SDK for each module.

Module Extension ​

A module extension represents a certain configuration, specific for a particular framework/technology associated with a module. A module can have multiple module extensions. E.g., Spring-specific configuration is stored in a Spring module extension.

Module extensions are managed via ModuleExtensionProvider.

Additional Information ​

For more information on each of these entities, see: