Interesting discussion, I don't think there's a clear definition for all.

Let me share *my* view:

You should split input and output: input is the coordinate, output or result is the artifact.
Based on the context you make the proper choice.

Coordinates are the groupId, artifactId, version, optional classifier and type (file extension):
all elements that are required to build up the repository path.
All elements in the pom the contain the groupId, artifactId and version are coordinates. The tricky thing here are versionRanges, don't think there's an explicit term other than "coordinate with version ranges" In case there are managed entities, there are also entity references, e.g. managed dependencies and dependency references (which will become effective based on inheritance and the managed dependency)

An artifact is a reference to a file, either resolved (downloaded) or unresolved.

So in my opinion it is not the coordinate that is resolved/unresolved, but the artifact.

Coordinates are always valid, resolvable, etc.

The artifact has the following states:
- unresolved (it has the coordinate, but no trigger yet to download)
- resolved (existing coordinate with download trigger succeeded)
- unresolvable (existing coordinate with download trigger failed)
The latter normally ends with an exception.
One could argue there's also a resolvable state, i.e. not yet downloaded but confirmed it exists, either via metadata or a HEAD request

to sum it up:
have groupId, artifactId & version that might or might not actually resolve to an artifact in a specific repository: coordinate for input, unresolved artifact for output

have groupId, artifactId & version that resolves to an artifact in a specific repository:
coordinate for input, resolved artifact for output

have groupId, artifactId & version that does not resolve to an artifact
coordinate for input, unresolvable artifact for output

have groupId & artifactId, but no version
versionless dependency/../.. the coordinate is the effective GAV

have groupId & artifactId; might or might not have version
dependency reference (?)

have groupId, artifactId & version, plus at least one of packaging or classifier
coordinate


Robert

Maybe it would be good to improve this page based on that:

[1] https://maven.apache.org/shared/maven-artifact-transfer/comparison.html



On Fri, 08 Jun 2018 09:18:59 +0200, Ross Goldberg <ross.goldb...@gmail.com> wrote:

Is there any established terminology for the following Maven coordinates
situations?

(I've included possible terms underneath each situation, in case no term
currently exists for it)

 - have groupId, artifactId & version that might or might not actually
resolve to an artifact in a specific repository
     - resolvable coordinates
     - versioned coordinates

 - have groupId, artifactId & version that resolves to an artifact in a
specific repository
     - valid coordinates
     - resolved coordinates

- have groupId, artifactId & version that does not resolve to an artifact
in a specific repository
     - unknown coordinates
     - invalid coordinates
     - unfound coordinates

 - have groupId & artifactId, but no version
     - unversioned coordinates

 - have groupId & artifactId; might or might not have version
- identified coordinates (I'm not a huge fan of this, but haven't yet
thought of anything better)

 - have groupId, artifactId & version, plus at least one of packaging or
classifier
     - extended coordinates

- each of the situations above that includes a version, but with a version
range instead of an exact version

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to