General API for finding and manipulating all kinds of projects.
Support for defining project types.
The Project API defines abstract projects. These are groupings of files built and
manipulated as units. It is used for Ant-based projects but could support
other scenarios such as makefiles. Modules can plug in project types which can
recognize certain folders as being projects, and define their behaviors.
Besides the visible Javadoc, this module permits a project to add implementations
into the project lookup (rather than global lookup).
The implementations will be consulted only in the case the relevant file
belongs to that project (according to
This helps avoid the need to consult irrelevant query implementations.
SourceGroupRelativeModifierImplementationto improve source root creation
In presence of multiple source roots, e.g. several source folders, or test folders, some of them may be more related to the
Added a factory method into the
LookupProviderSupport creating a
to provide more information about a potential project via
Added a SPI internface for
different implementations of
Newly introduced interfaces
ProjectContainerProvider are meant as less general replacement for
as they explicitly declaring their contract
DependencyProjectProvider the project's dependency projects and
ProjectContainerProvider projects that are build as part of this project). Code using
should evaluate if
ProjectContainerProvider contracts suit their usage better. Please note that the new interfaces are not
mandatory for project types to implement and if it's missing,
SubprojectProvider should be used.
The SPI should be used by modules defining particular project types, e.g. the J2SE project type. The API is to be used primarily by GUI infrastructure and some queries, though other module code may on occasion need to refer to the API.
Read more about the implementation in the answers to architecture questions.