Gradle Project Coordinates, State and Configured Properties: Difference between revisions
Line 7: | Line 7: | ||
Project-identifying information such as [[#Name|name]], [[#Group|group]], [[#Version|version]], [[#Description|description]] and [[#Path|path]] are referred to as "project coordinates". The terminology comes from Maven, where a project name, group and version uniquely identify a project artifact. Gradle project coordinates map onto Maven project coordinates, as described in the [[#Compatibility_with_Maven_Project_Coordinates|Compatibility with Maven Project Coordinates]] section. | Project-identifying information such as [[#Name|name]], [[#Group|group]], [[#Version|version]], [[#Description|description]] and [[#Path|path]] are referred to as "project coordinates". The terminology comes from Maven, where a project name, group and version uniquely identify a project artifact. Gradle project coordinates map onto Maven project coordinates, as described in the [[#Compatibility_with_Maven_Project_Coordinates|Compatibility with Maven Project Coordinates]] section. | ||
Different coordinates can be set in different locations. The project [[#Name|name]] can only be set in [[settings.gradle]], while the [[#Group|group]], [[#Version|version]], [[#Description|description]] can only be set and read in [[build.gradle]]. More details are provided in their corresponding section. | Different project coordinates can be set in different locations. The project [[#Name|name]] can only be set in [[settings.gradle]], while the [[#Group|group]], [[#Version|version]], [[#Description|description]] can only be set and read in [[build.gradle]]. More details are provided in their corresponding section. | ||
The coordinates are available as values of DSL variables and programmatically via the Project API. | The coordinates are available as values of DSL variables and programmatically via the Project API. |
Revision as of 02:15, 4 October 2020
Internal
Overview
Project-identifying information such as name, group, version, description and path are referred to as "project coordinates". The terminology comes from Maven, where a project name, group and version uniquely identify a project artifact. Gradle project coordinates map onto Maven project coordinates, as described in the Compatibility with Maven Project Coordinates section.
Different project coordinates can be set in different locations. The project name can only be set in settings.gradle, while the group, version, description can only be set and read in build.gradle. More details are provided in their corresponding section.
The coordinates are available as values of DSL variables and programmatically via the Project API.
Compatibility with Maven Project Coordinates
Gradle produces by default artifacts that are compatible with Maven repositories, so Gradle translates its project coordinates into Maven project coordinates. The translation rules are described in the name, group and version sections: the project name becomes artifactId,
Coordinates
Name
The project name is a string that identifies the project. The project name is initialized by default with the name of the directory that contains the project's build.gradle.
The name is not necessarily unique within a project hierarchy, the unique identifier for the project in a hierarchy is its path. The project name can be obtained programmatically during the build with Project.getName() or with the name
DSL variable:
println "${name}"
println project.name
Maven artifactId
The project name automatically becomes the Maven project name coordinate, artifactId.
More details about artifactId:
Group
Maven groupId
The group information must be specified when generating a Maven artifact. If the group information is missing, Maven Publish plugin will complain that "groupId cannot be empty".
Version
Maven version
If the project does not configure a version, the corresponding Maven version will be empty - the artifact will not cary any version information.
Description
Path
Project Directory
TODO
- Verify that name, group and version can be set in settings.gradle. How? Via the ProjectDescriptor interface.