package org.jboss.shrinkwrap.resolver.api.maven; import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenCoordinate; /** * Resolved Maven-based artifact's metadata * * @author <a href="mailto:alr@jboss.org">Andrew Lee Rubinger</a> * @author <a href="mailto:kpiwko@redhat.com">Karel Piwko</a> * @author <a href="mailto:mmatloka@gmail.com">Michal Matloka</a> */ public interface MavenArtifactInfo { /** * Returns the defined coordinate (i.e. address) of this resolved artifact. * * @return The defined coordinate (i.e. address) of this resolved artifact. */ MavenCoordinate getCoordinate(); /** * Returns the resolved "version" portion of this artifact's coordinates; SNAPSHOTs may declare a version field (as * represented by {@link MavenResolvedArtifact#getResolvedVersion()}), which must resolve to a versioned snapshot version * number. That resolved version number is reflected by this field. In the case of true versions (ie. * non-SNAPSHOTs), this call will be equal to {@link MavenCoordinate#getVersion()}. * * @return The resolved "version" portion of this artifact's coordinates */ String getResolvedVersion(); /** * Returns whether or not this artifact is using a SNAPSHOT version. * * @return Whether or not this artifact is using a SNAPSHOT version. */ boolean isSnapshotVersion(); /** * Returns the file extension of this artifact, ie. ("jar") * * @return The file extension, which is never null */ String getExtension(); /** * Returns artifacts dependencies. * * @return Artifacts dependencies. */ MavenArtifactInfo[] getDependencies(); /** * Returns the scope information of this artifact * * @return the scope information of this artifact */ ScopeType getScope(); /** * Returns true if artifact is optional. * * @return return true if artifact is optional. */ boolean isOptional(); }