desruisseaux commented on code in PR #1640: URL: https://github.com/apache/maven/pull/1640#discussion_r1714920456
########## api/maven-api-core/src/main/java/org/apache/maven/api/Artifact.java: ########## @@ -23,76 +23,83 @@ import org.apache.maven.api.annotations.Nonnull; /** - * An artifact points to a resource such as a jar file or war application. + * Pointer to a resolved resource such as a <abbr>JAR</abbr> file or <abbr>WAE</abbr> application. + * {@code Artifact} instances are created when <dfn>resolving</dfn> {@link Artifact} instances. + * Resolving is the process that selects a {@linkplain #getVersion() particular version} + * and downloads the artifact in the local repository. + * The download may be deferred to the first time that the file is needed. * * @since 4.0.0 */ @Experimental @Immutable public interface Artifact { - /** - * Returns a unique identifier for this artifact. + * {@return a unique identifier for this artifact}. * The identifier is composed of groupId, artifactId, extension, classifier, and version. * - * @return the unique identifier + * @see ArtifactCoordinate#getId() */ @Nonnull default String key() { + String c = getClassifier(); return getGroupId() + ':' + getArtifactId() + ':' + getExtension() - + (getClassifier().isEmpty() ? "" : ":" + getClassifier()) + + (c.isEmpty() ? "" : ":" + c) + ':' + getVersion(); } /** - * The groupId of the artifact. + * {@return the group identifier of the artifact}. * - * @return the groupId + * @see ArtifactCoordinate#getGroupId() */ @Nonnull String getGroupId(); /** - * The artifactId of the artifact. + * {@return the identifier of the artifact}. * - * @return the artifactId + * @see ArtifactCoordinate#getArtifactId() */ @Nonnull String getArtifactId(); /** - * The version of the artifact. + * {@return the version of the artifact}. Contrarily to {@link ArtifactCoordinate}, + * each {@code Artifact} is associated to a specific version instead of a range of versions. Review Comment: Then the `Version` interface should said something about those meta-versions. I will put a first attempt, but it should be completed with an explanation of `LATEST`, `RELEASE` and `SNAPSHOT` semantic. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org