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: