mirror of https://github.com/apache/maven.git
Beginnings of document explaining how repository lists are constructed during inheritance and transitive dependency resolution.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@239509 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
252b151052
commit
df6414525d
|
@ -0,0 +1,54 @@
|
||||||
|
---
|
||||||
|
Repository Definitions and Artifact Resolution: Overview
|
||||||
|
---
|
||||||
|
John Casey
|
||||||
|
---
|
||||||
|
23-August-2005
|
||||||
|
---
|
||||||
|
|
||||||
|
Overview: Repository Definitions and Artifact Resolution
|
||||||
|
|
||||||
|
*Introduction
|
||||||
|
|
||||||
|
As you no doubt know by now, artifacts are a central concept to Maven. Since
|
||||||
|
artifacts are referenced in abstract terms (groupId/artifactId rather than
|
||||||
|
file path), they must be available in the Maven repository system in order
|
||||||
|
for the build process to resolve them. This really amounts to putting the
|
||||||
|
referenced artifacts into a Maven repository.
|
||||||
|
|
||||||
|
To promote flexibility in the configuration of your build environment,
|
||||||
|
Maven allows multiple repositories to be defined from which artifacts can
|
||||||
|
be resolved. Repositories are always defined in the POM, but since POMs can
|
||||||
|
inherit from one another, and POM dependencies are resolved transitively,
|
||||||
|
predicting which repository will be used to resolve a particular artifact
|
||||||
|
can be daunting.
|
||||||
|
|
||||||
|
This document will attempt to explain the rules involved with constructing
|
||||||
|
repository lists for resolving artifacts referenced in various parts of the
|
||||||
|
build process, and eliminate - or at least, reduce - the potential for
|
||||||
|
confusion when it comes to artifact resolution.
|
||||||
|
|
||||||
|
*Goals
|
||||||
|
|
||||||
|
The artifact resolution process in Maven has a couple of central goals which
|
||||||
|
should help make the build process as flexible and powerful as possible. They
|
||||||
|
are:
|
||||||
|
|
||||||
|
* Allow the local POM (the one being built) to have the first opportunity to
|
||||||
|
control resolution.
|
||||||
|
|
||||||
|
<NOTE: In the case of an inheritance hierarchy, the ancestor POMs are
|
||||||
|
appended to the current repository list in inside-out order.>
|
||||||
|
|
||||||
|
* Allow the declaring-POM (the one declaring the dependency, in the case of
|
||||||
|
transitivity) the second opportunity.
|
||||||
|
|
||||||
|
* Default to the repositories defined in the super-POM for resolution.
|
||||||
|
|
||||||
|
~~Repository list construction (for resolution)
|
||||||
|
~~~~Repository sources (local vs. default vs. inheritance vs. transitive POMs)
|
||||||
|
~~~~Preserving the authority of the POM which declares the artifacts
|
||||||
|
~~~~Local-wins priority (during inheritance AND transitive dependency resolution)
|
||||||
|
~~~~Keeping the super-POM repositories last in line (ensuring their default status)
|
||||||
|
|
||||||
|
~~The net effect: a sample walkthrough
|
Loading…
Reference in New Issue