<commit_before>[[dependency_management_terminology]]
== Dependency Management Terminology

Dependency management comes with a wealth of terminology. Here you can find the most commonly-used terms including references to the user guide to learn about their practical application.

[[sub:terminology_configuration]]
=== Configuration

A configuration is a named set of <<sub:terminology_dependency,dependencies>> grouped together for a specific goal: For example the `implementation` configuration represents the set of dependencies required to compile a project. Configurations provide access to the underlying, resolved <<sub:terminology_module,modules>> and their artifacts. For more information, see <<sub:scope_of_dependency_configurations>>.

[NOTE]
====
The word "configuration" is an overloaded term and has a different meaning outside of the context of dependency management.
====

[[sub:terminology_dependency]]
=== Dependency

A dependency is a pointer to another piece of software required to build, test or run a <<sub:terminology_module,module>>. For more information, see <<declaring_dependencies>>.

[[sub:terminology_module]]
=== Module

A piece of software that evolves over time e.g. link:https://github.com/google/guava[Google Guava]. Every module has a name. Each release of a module is optimally represented by a <<sub:terminology_module_version,module version>>. For convenient consumption, modules can be hosted in a <<sub:terminology_repository,repository>>.

[[sub:terminology_module_metadata]]
=== Module metadata

Releases of a <<sub:terminology_module,module>> can provide metadata. Metadata is the data that describes the module in more detail e.g. the coordinates for locating it in a repository, information about the project or required <<sub:terminology_transitive_dependency,transitive dependencies>>. In Maven the metadata file is called `.pom`, in Ivy it is called `ivy.xml`.
<commit_msg>Add "dependency constraint" dependency management glossary<commit_after>[[dependency_management_terminology]]
== Dependency Management Terminology

Dependency management comes with a wealth of terminology. Here you can find the most commonly-used terms including references to the user guide to learn about their practical application.

[[sub:terminology_configuration]]
=== Configuration

A configuration is a named set of <<sub:terminology_dependency,dependencies>> grouped together for a specific goal: For example the `implementation` configuration represents the set of dependencies required to compile a project. Configurations provide access to the underlying, resolved <<sub:terminology_module,modules>> and their artifacts. For more information, see <<sub:scope_of_dependency_configurations>>.

[NOTE]
====
The word "configuration" is an overloaded term and has a different meaning outside of the context of dependency management.
====

[[sub:terminology_dependency]]
=== Dependency

A dependency is a pointer to another piece of software required to build, test or run a <<sub:terminology_module,module>>. For more information, see <<declaring_dependencies>>.

[[sub:terminology_dependency_constraint]]
=== Dependency constraint

A dependency constraint defines requirements that need to be met by a module to make it a valid resolution result for the dependency. For example, a dependency constraint can narrow down the set of supported module versions. Dependency constraints can be used to express such requirements for transitive dependencies. For more information, see <<sec:dependency_constraints>>.

[[sub:terminology_module]]
=== Module

A piece of software that evolves over time e.g. link:https://github.com/google/guava[Google Guava]. Every module has a name. Each release of a module is optimally represented by a <<sub:terminology_module_version,module version>>. For convenient consumption, modules can be hosted in a <<sub:terminology_repository,repository>>.

[[sub:terminology_module_metadata]]
=== Module metadata

Releases of a <<sub:terminology_module,module>> can provide metadata. Metadata is the data that describes the module in more detail e.g. the coordinates for locating it in a repository, information about the project or required <<sub:terminology_transitive_dependency,transitive dependencies>>. In Maven the metadata file is called `.pom`, in Ivy it is called `ivy.xml`.

{'fraction_non_alphanumeric': 0.07355314733686881, 'fraction_numerical': 0.0, 'mean_word_length': 6.352542372881356, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 41, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '140970', 'n_tokens_mistral': 1037, 'n_tokens_neox': 996, 'n_words': 494}