aQute.maven.dto.DependencyDTO Maven / Gradle / Ivy
The newest version!
package aQute.maven.dto;
import aQute.bnd.util.dto.DTO;
import aQute.bnd.version.MavenVersion;
/**
* The <dependency>
element contains information about a
* dependency of the project.
*/
public class DependencyDTO extends DTO {
/**
* The project group that produced the dependency, e.g.
* org.apache.maven
.
*/
public String groupId;
/**
* The unique id for an artifact produced by the project group, e.g.
* maven-artifact
.
*/
public String artifactId;
/**
* The version of the dependency, e.g. 3.2.1
. In Maven 2, this
* can also be specified as a range of versions.
*/
public MavenVersion version;
/**
* The type of dependency. While it usually represents the extension on the
* filename of the dependency, that is not always the case. A type can be
* mapped to a different extension and a classifier. The type often
* corresponds to the packaging used, though this is also not always the
* case. Some examples are jar
, war
,
* ejb-client
and test-jar
: see
* default artifact
* handlers for a list. New types can be defined by plugins that set
* extensions
to true
, so this is not a complete
* list.
*/
public String type = "jar";
/**
* The classifier of the dependency. It is appended to the filename after
* the version. This allows:
*
* - refering to attached artifact, for example
sources
and
* javadoc
: see
* default artifact
* handlers for a list,
* - distinguishing two artifacts that belong to the same POM but were
* built differently. For example,
jdk14
and jdk15
* .
*
*/
public String classifier;
/**
* The scope of the dependency - compile
, runtime
,
* test
, system
, and provided
. Used
* to calculate the various classpaths used for compilation, testing, and so
* on. It also assists in determining which artifacts to include in a
* distribution of this project. For more information, see
* the dependency mechanism.
*/
public enum Scope {
compile,
runtime,
test,
system,
provided;
}
public Scope scope;
/**
* FOR SYSTEM SCOPE ONLY. Note that use of this property is
* discouraged and may be replaced in later versions. This specifies
* the path on the filesystem for this dependency. Requires an absolute path
* for the value, not relative. Use a property that gives the machine
* specific absolute path, e.g. ${java.home}
.
*/
public String systemPath;
/**
* Lists a set of artifacts that should be excluded from this dependency's
* artifact list when it comes to calculating transitive dependencies.
*/
public ExclusionDTO[] exclusions;
/**
* Indicates the dependency is optional for use of this library. While the
* version of the dependency will be taken into account for dependency
* calculation if the library is used elsewhere, it will not be passed on
* transitively. Note: While the type of this field is String
* for technical reasons, the semantic type is actually Boolean
* . Default value is false
.
*/
public String optional;
}