001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: */
018: package org.apache.ivy.core.module.descriptor;
019:
020: import java.net.URL;
021: import java.util.Date;
022:
023: import org.apache.ivy.core.module.id.ArtifactRevisionId;
024: import org.apache.ivy.core.module.id.ModuleRevisionId;
025: import org.apache.ivy.util.extendable.ExtendableItem;
026:
027: /**
028: * Representation of a published 'file' in the development environment. An artifact is generally a
029: * file that is produced by a project build. This is typically a <code>jar</code>,
030: * a <code>war</code>, an <code>ear</code>, a <code>zip</code>, a <code>deb</code>, etc.
031: */
032: public interface Artifact extends ExtendableItem {
033:
034: /**
035: * Returns the resolved module revision id for this artifact
036: *
037: * @return the resolved module revision id.
038: */
039: ModuleRevisionId getModuleRevisionId();
040:
041: /**
042: * Returns the resolved publication date for this artifact
043: *
044: * @return the resolved publication date. Never null.
045: */
046: Date getPublicationDate();
047:
048: /**
049: * Return the name of the artifact, generally 'part' of the basename of the file.
050: *
051: * @return the name of the artifact. Never null.
052: */
053: String getName();
054:
055: /**
056: * Returns the type of the artifact, typically 'jar', 'source', 'javadoc', 'debian', ...
057: *
058: * @return the type of the artifact. Never null.
059: */
060: String getType();
061:
062: /**
063: * Retrieve the extension of the artifact. The extension is without dot (ie. 'jar' and not
064: * '.jar')
065: *
066: * @return the extension of the artifact. Never null.
067: */
068: String getExt();
069:
070: /**
071: * Returns the url at which this artifact can be found independently of ivy configuration. This
072: * can be null (and is usually for standard artifacts)
073: *
074: * @return url at which this artifact can be found independently of ivy configuration
075: */
076: URL getUrl();
077:
078: /**
079: * Returns the list of configurations where this artifact is associated to.
080: *
081: * @return the list of configuration this artifact is associated to. Never null.
082: */
083: String[] getConfigurations();
084:
085: /**
086: * Return the specific identifier of this artifact.
087: *
088: * @return the id of the artifact
089: */
090: ArtifactRevisionId getId();
091:
092: /**
093: * Returns true if this artifact represents a module metadata artifact, false if it's a
094: * published artifact
095: *
096: * @return true if this artifact represents a module metadata artifact, false if it's a
097: * published artifact
098: */
099: boolean isMetadata();
100: }
|