001 package org.apache.maven.artifact;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.io.File;
023 import java.util.Collection;
024 import java.util.List;
025 import java.util.regex.Pattern;
026
027 import org.apache.maven.artifact.handler.ArtifactHandler;
028 import org.apache.maven.artifact.metadata.ArtifactMetadata;
029 import org.apache.maven.artifact.repository.ArtifactRepository;
030 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
031 import org.apache.maven.artifact.versioning.ArtifactVersion;
032 import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
033 import org.apache.maven.artifact.versioning.VersionRange;
034
035 /**
036 * Maven Artifact interface. Notice that it mixes artifact definition concepts (groupId, artifactId, version)
037 * with dependency information (version range, scope).
038 */
039 public interface Artifact
040 extends Comparable<Artifact>
041 {
042
043 String RELEASE_VERSION = "RELEASE";
044
045 String LATEST_VERSION = "LATEST";
046
047 String SNAPSHOT_VERSION = "SNAPSHOT";
048
049 Pattern VERSION_FILE_PATTERN = Pattern.compile( "^(.*)-([0-9]{8}.[0-9]{6})-([0-9]+)$" );
050
051 // TODO: into artifactScope handler
052
053 String SCOPE_COMPILE = "compile";
054
055 String SCOPE_COMPILE_PLUS_RUNTIME = "compile+runtime";
056
057 String SCOPE_TEST = "test";
058
059 String SCOPE_RUNTIME = "runtime";
060
061 String SCOPE_RUNTIME_PLUS_SYSTEM = "runtime+system";
062
063 String SCOPE_PROVIDED = "provided";
064
065 String SCOPE_SYSTEM = "system";
066
067 String SCOPE_IMPORT = "import"; // Used to import dependencyManagement dependencies
068
069 String getGroupId();
070
071 String getArtifactId();
072
073 String getVersion();
074
075 void setVersion( String version );
076
077 String getScope();
078
079 String getType();
080
081 String getClassifier();
082
083 boolean hasClassifier();
084
085 File getFile();
086
087 void setFile( File destination );
088
089 String getBaseVersion();
090
091 void setBaseVersion( String baseVersion );
092
093 String getId();
094
095 String getDependencyConflictId();
096
097 void addMetadata( ArtifactMetadata metadata );
098
099 Collection<ArtifactMetadata> getMetadataList();
100
101 void setRepository( ArtifactRepository remoteRepository );
102
103 ArtifactRepository getRepository();
104
105 void updateVersion( String version, ArtifactRepository localRepository );
106
107 String getDownloadUrl();
108
109 void setDownloadUrl( String downloadUrl );
110
111 ArtifactFilter getDependencyFilter();
112
113 void setDependencyFilter( ArtifactFilter artifactFilter );
114
115 ArtifactHandler getArtifactHandler();
116
117 List<String> getDependencyTrail();
118
119 void setDependencyTrail( List<String> dependencyTrail );
120
121 void setScope( String scope );
122
123 VersionRange getVersionRange();
124
125 void setVersionRange( VersionRange newRange );
126
127 void selectVersion( String version );
128
129 void setGroupId( String groupId );
130
131 void setArtifactId( String artifactId );
132
133 boolean isSnapshot();
134
135 void setResolved( boolean resolved );
136
137 boolean isResolved();
138
139 void setResolvedVersion( String version );
140
141 void setArtifactHandler( ArtifactHandler handler );
142
143 boolean isRelease();
144
145 void setRelease( boolean release );
146
147 List<ArtifactVersion> getAvailableVersions();
148
149 void setAvailableVersions( List<ArtifactVersion> versions );
150
151 boolean isOptional();
152
153 void setOptional( boolean optional );
154
155 ArtifactVersion getSelectedVersion()
156 throws OverConstrainedVersionException;
157
158 boolean isSelectedVersionKnown()
159 throws OverConstrainedVersionException;
160
161 }