maven
Maven
Maven's model for Java project.
org.apache.maven.model
Model
Model
3.0.0+
extend
3.0.0+
The location of the parent project, if one exists. Values from the parent project will be
the default for this project if they are left unspecified.
The path may be absolute, or relative to the current project.xml file.
String
parent
4.0.0
Specified which project to extend.
Parent
modelVersion
4.0.0
true
The version of this model you are using.
String
pomVersion
3.0.0
true
String
id
3.0.0
true
The id of the project.
String
groupId
3.0.0+
true
The primary grouping for your project.
String
artifactId
3.0.0+
true
The identifier used when generating the artifact for your project.
String
type
4.0.0
The type of artifact this project produces.
String
jar
name
3.0.0+
true
Human readable name of the project.
String
currentVersion
3.0.0
true
String
version
4.0.0
true
The current version of the project.
String
shortDescription
3.0.0+
An abbreviated description of the project.
String
description
3.0.0+
A detailed description of the project. This element is
usually specified as CDATA to enable the use of HTML tags
within the description. This description is used to
generate the
front page
of the project's web site.
String
url
3.0.0+
The URL where the project can be found.
String
logo
3.0.0+
The logo for the project.
String
issueTrackingUrl
3.0.0
The URL where the issue tracking system used by the project can be found.
String
issueManagement
4.0.0
The project's issue management information.
IssueManagement
ciManagement
4.0.0
The project's continuous integration management information.
CiManagement
inceptionYear
3.0.0+
true
The year the project started.
String
gumpRepositoryId
3.0.0
Hint for the gump continuous integration build system.
String
siteAddress
3.0.0
The FQDN of the host where the project's site is uploaded.
String
siteDirectory
3.0.0
The directory on the site host where site documentation is placed when the site is uploaded.
String
distributionSite
3.0.0
The FQDN of the host where the project's artifacts are uploaded.
String
This naming is inconsistent and distribution should occur from a repository structure.
distributionDirectory
3.0.0
The directory on the distribution host where artifacts are placed when uploaded.
String
This naming is inconsistent and distribution should occur from a repository structure.
repositories
4.0.0
The lists of the remote repositories
java.util.List
new ArrayList()
mailingLists
3.0.0+
The mailing lists for the project.
java.util.List
new ArrayList()
developers
3.0.0+
This element describes all of the developers associated with a
project. Each developer is described by a
developer
element, which is then described by
additional elements (described below). The auto-generated site
documentation references this information.
java.util.List
new ArrayList()
contributors
3.0.0+
This element describes all of the contributors associated with a
project who are not developers. Each contributor is described by a
contributor
element, which is then describe by additional
elements (described below). The auto-generated site documentation
references this information.
java.util.List
new ArrayList()
dependencies
3.0.0+
This element describes all of the dependencies associated with a
project. Each dependency is described by a
dependency
element, which is then described by
additional elements (described below).
java.util.List
new ArrayList()
These should ultimately only be compile time dependencies when transitive dependencies come into play.
overrides
4.0.0
This element describes all of the dependency overrides for a
project. Each dependency is described by a
override
element, which is then described by
additional elements (described below).
java.util.List
new ArrayList()
licenses
3.0.0+
This element describes all of the licenses for this project. Each license is described by a
license
element, which is then describe by additional
elements (described below). The auto-generated site documentation
references this information. Projects should only list the license(s) that
applies to the project and not the licenses that apply to dependencies.
java.util.List
new ArrayList()
versions
3.0.0
The released versions of the project.
java.util.List
new ArrayList()
branches
3.0.0
The SCM branches create for the project.
java.util.List
new ArrayList()
packageGroups
3.0.0+
Package groups required for complete javadocs.
java.util.List
new ArrayList()
reports
3.0.0+
This element includes the specification of reports to be
included in a Maven-generated site. These reports will be run
when a user executes
maven site
. All of the
reports will be included in the navigation bar for browsing in
the order they are specified.
java.util.List
new ArrayList()
scm
4.0.0
Specification for the SCM use by the project.
Scm
repository
3.0.0
Specification for the SCM use by the project.
Repository
This element needs to be renamed as it conflicts with the existing notion of repositories in Maven.
build
3.0.0+
true
Information required to build the project.
Build
organization
3.0.0+
This element describes various attributes of the organziation to
which the project belongs. These attributes are utilized when
documentation is created (for copyright notices and links).
Organization
distributionManagement
4.0.0
Distribution information for a project.
DistributionManagement
local
4.0.0
false
Local configuration information.
Local
properties
3.0.0+
Properties about the project. This allows you to configure your project and the
plugins it uses.
java.util.Properties
new Properties()
preGoals
4.0.0
Set of decorator(s) injected before the target goal(s).
java.util.List
new java.util.ArrayList()
postGoals
4.0.0
Set of decorator(s) injected after the target goal(s).
java.util.List
new java.util.ArrayList()
3.0.0
public void setVersion(String version)
{
this.currentVersion = version;
}
public String getVersion()
{
return currentVersion;
}
3.0.0+
private String packageName;
public void setPackage(String packageName)
{
this.packageName = packageName;
}
public String getPackage()
{
return packageName;
}
4.0.0
public String getId()
{
StringBuffer id = new StringBuffer();
id.append( getGroupId() );
id.append( ":" );
id.append( getArtifactId() );
id.append( ":" );
id.append( getType() );
id.append( ":" );
id.append( getVersion() );
return id.toString();
}
Branch
3.0.0+
This element describes each of the branches of the
project. Each branch is described by a
tag
element
tag
3.0.0+
true
The branch tag in the version control system
(e.g. cvs) used by the project for the source
code associated with this branch of the
project.
String
description
4.0.0
A description of the branch and its strategy.
String
lastMergeTag
4.0.0
This is the tag in the version control system that was last used
to merge from the branch to the current codebase. Future merges
should merge only the changes from this tag to the next.
String
Build
3.0.0+
nagEmailAddress
3.0.0
An address to which notifications regarding the status of builds
for this project can be sent. This is intended for use by tools
which do unattended builds, for example those providing for
continuous integration. Currently this is used by the
maven:gump-descriptor
target.
String
This should be moved out of the build section. Vestigal for use with Gump.
sourceDirectory
3.0.0+
true
This element specifies a directory containing the source
of the project. The generated build system will compile
the source in this directory when the project is built.
The path given is relative to the project descriptor.
String
unitTestSourceDirectory
3.0.0+
true
This element specifies a directory containing the unit test
source of the project. The generated build system will
compile these directories when the project is being tested.
The unit tests must use the JUnit test framework.
The path given is relative to the project descriptor.
String
aspectSourceDirectory
3.0.0+
This element specifies a directory containing Aspect
sources of the project. The generated build system will
compile the Aspects in this directory when the project is
built if Aspects have been enabled (see the
Aspectj goals document).
The path given is relative to the project descriptor.
String
integrationUnitTestSourceDirectory
3.0.0+
This element specifies a directory containing integration test
sources of the project.
String
sourceModifications
3.0.0+
true
This element describes all of the sourceModifications associated with a
project. Each source modification is described by a
sourceModification
element, which is then described by
additional elements (described below). These modifications are used
to exclude or include various source depending on the environment
the build is running in.
java.util.List
new ArrayList()
unitTest
3.0.0+
true
This element specifies unit tests associated with the project.
UnitTest
new UnitTest()
resources
3.0.0+
This element describes all of the resources associated with a project or unit tests.
Each resource is described by a resource element, which is then described by additional
elements (described
below). These resources are used to
complete the jar file or to run unit test.
java.util.List
new ArrayList()
directory
4.0.0
The directory where all generated by the build is placed.
String
output
4.0.0
The directory where compiled application classes are placed.
String
finalName
4.0.0
The filename (including an extension, but with no path information) that the produced artifact
will be called. The default value is artifactId-version.extension (where extension is derived from
type).
String
testOutput
4.0.0
The directory where compiled test classes are placed.
String
CiManagement
4.0.0
system
4.0.0
The name of the continuous integration system i.e. Bugzilla
String
url
4.0.0
Url for the continuous integration system use by the project.
String
nagEmailAddress
4.0.0
Email address for the party to be notified on unsuccessful builds.
String
Contributor
3.0.0+
name
3.0.0+
The full name of the contributor.
String
email
3.0.0+
The email address of the contributor.
String
url
3.0.0+
The URL for the homepage of the contributor.
String
organization
3.0.0+
The organization to which the contributor belongs.
String
roles
3.0.0+
The roles the contributor plays in the project. Each role is
describe by a
role
element, the body of which is a
role name.
java.util.List
new ArrayList()
timezone
3.0.0+
The timezone the contributor is in. This is a number in the range -14 to 14.
String
Dependency
3.0.0+
id
3.0.0
true
The id of the project.
String
groupId
3.0.0+
true
The project group that produced the dependency, e.g.
geronimo
.
String
artifactId
3.0.0+
true
The unique id for an artifact produced by the project group, e.g.
germonimo-jms
String
version
3.0.0+
true
The version of the dependency., e.g.
3.2.1
String
url
3.0.0+
This url will be provided to the user if the jar file cannot be downloaded
from the central repository.
String
The URL should really be gleaned from a shared database of dependency information.
jar
3.0.0
Literal name of the artifact.
String
artifact
4.0.0+
Literal name of the artifact
String
type
3.0.0+
Other known recognised dependency types are:
ejb
and
plugin
.
String
jar
properties
3.0.0+
Properties about the dependency. Various plugins allow you to
mark
dependencies with properties. For example the
war plugin looks for a
war.bundle
property, and if found will include the dependency
in
WEB-INF/lib
. For example syntax, check the war plugin docs.
java.util.Properties
new Properties()
4.0.0
public String getId()
{
return groupId + ":" + artifactId + ":" + type + ":" + version;
}
public String toString()
{
return groupId + "/" + type + "s:" + artifactId + "-" + version;
}
3.0.0
element is explicity used in the POM.
if ( getJar() != null)
{
return getJar();
}
return getArtifactId() + "-" + getVersion() + "." + getExtension();
}
public String getExtension()
{
if ("ejb".equals(getType()) || "plugin".equals(getType()) || "aspect".equals(getType())) return "jar";
return getType();
}
public boolean isAddedToClasspath()
{
return ("jar".equals(getType()) || "ejb".equals(getType()));
}
public boolean isPlugin()
{
return ("plugin".equals(getType()));
}
public String getProperty( String property )
{
return getProperties().getProperty( property );
}
public boolean equals( Object o )
{
if ( o == null )
{
return false;
}
if ( getClass() != o.getClass() )
{
return false;
}
if ( getId() != null )
{
return getId().equals( ( (Dependency) o ).getId() );
}
else
{
return ( (Dependency) o ).getId() == null;
}
}
public int hashCode()
{
if ( getId() != null )
{
return getId().hashCode();
}
else
{
return super.hashCode();
}
}
]]>
Override
4.0.0
groupId
4.0.0
true
The project group that produced the dependency, e.g.
geronimo
.
String
artifactId
4.0.0
true
The unique id for an artifact produced by the project group, e.g.
germonimo-jms
String
type
4.0.0
Other known recognised dependency types are:
ejb
and
plugin
.
String
jar
version
4.0.0
true
The version of the dependency., e.g.
3.2.1
String
file
4.0.0
true
The filename of the dependency that will be used to override the one from the repository, e.g.
lib/non-distributable-code-1.3.jar
String
Contributor
Developer
3.0.0+
id
3.0.0+
The username of the developer.
String
IssueManagement
4.0.0
system
4.0.0
The name of the issue management system i.e. Bugzilla
String
url
4.0.0
Url for the issue management system use by the project.
String
DistributionManagement
4.0.0
This elements describes all that pertains to distribution for a project.
repository
4.0.0
Information needed for deploying to remote repository artifacts generated by the project
Repository
site
Information needed for deploying website files of the project.
4.0.0
Site
License
3.0.0+
name
3.0.0+
The full legal name of the license.
String
url
3.0.0+
The official url for the license text.
String
distribution
3.0.0
The primary method by which this project may be distributed.
- repo
- may be downloaded from the Maven repository
- manual
- user must manually download and install the dependency.
String
comments
3.0.0+
the description
String
MailingList
3.0.0+
This element describes all of the mailing lists associated with
a project. Each mailing list is described by a
mailingList
element, which is then described by
additional elements (described below). The auto-generated site
documentation references this information.
name
3.0.0+
The name of the mailing list.
String
subscribe
3.0.0+
The email address or link that can be used to subscribe to the mailing list.
If this is an email address, a
mailto:
link will automatically be created when
the documentation is created.
String
unsubscribe
3.0.0+
The email address or link that can be used to unsubscribe to
the mailing list. If this is an email address, a
mailto:
link will automatically be created
when the documentation is created.
String
post
4.0.0
The email address or link that can be used to post to
the mailing list. If this is an email address, a
mailto:
link will automatically be created
when the documentation is created.
String
archive
3.0.0+
The link to a URL where you can browse the archive.
String
This should probably be removed from 4.0.0 before alpha-1
archives
4.0.0
The link to a URL where you can browse the archive.
java.util.List
new ArrayList()
We could probably have a specific element for a dev mailing list for
things like CI, and maybe even a specific element for the user and scm
mailing lists. Then leave the more lose structure for any other type
of mailing list.
Organization
3.0.0+
name
3.0.0+
The full name of the organization.
String
url
3.0.0+
The URL to the organization's home page.
String
logo
3.0.0+
The URL to the organization's logo image. This can be an URL relative
to the base directory of the generated web site,
(e.g.,
/images/org-logo.png
) or an absolute URL
(e.g.,
http://my.corp/logo.png
). This value is used
when generating the project documentation.
String
PackageGroup
3.0.0+
title
3.0.0+
the description
String
packages
3.0.0+
the description
String
PatternSet
3.0.0+
includes
3.0.0+
the description
java.util.List
new ArrayList()
excludes
3.0.0+
the description
java.util.List
new ArrayList()
3.0.0+
public List getDefaultExcludes()
{
List defaultExcludes = new ArrayList();
defaultExcludes.add( "**/*~" );
defaultExcludes.add( "**/#*#" );
defaultExcludes.add( "**/.#*" );
defaultExcludes.add( "**/%*%" );
defaultExcludes.add( "**/._*" );
// CVS
defaultExcludes.add( "**/CVS" );
defaultExcludes.add( "**/CVS/**" );
defaultExcludes.add( "**/.cvsignore" );
// SCCS
defaultExcludes.add( "**/SCCS" );
defaultExcludes.add( "**/SCCS/**" );
// Visual SourceSafe
defaultExcludes.add( "**/vssver.scc" );
// Subversion
defaultExcludes.add( "**/.svn" );
defaultExcludes.add( "**/.svn/**" );
// Mac
defaultExcludes.add( "**/.DS_Store" );
return defaultExcludes;
}
Parent
4.0.0
artifactId
4.0.0
The artifact id of the project to extend.
String
groupId
4.0.0
The group id of the project to extend.
String
version
4.0.0
The versi>on of the project to extend.
String
Repository
3.0.0
connection
3.0.0
The source configuration management system URL
that describes the repository and how to connect to the
repository. This is used by Maven when
building versions
from specific ID.
String
developerConnection
3.0.0
Just like connection, but for developers, i.e. this scm connection
will not be read only.
String
url
3.0.0
The URL to the project's browsable CVS repository.
String
Scm
4.0.0
connection
4.0.0
The source configuration management system URL
that describes the repository and how to connect to the
repository. This is used by Maven when
building versions
from specific ID.
String
developerConnection
4.0.0
Just like connection, but for developers, i.e. this scm connection
will not be read only.
String
url
4.0.0
The URL to the project's browsable CVS repository.
String
branches
4.0.0
The SCM branches that are currently active for the project. These should only be those forked from the current branch or trunk that are intended to be used.
java.util.List
new ArrayList()
Resource
3.0.0+
PatternSet
directory
3.0.0+
Describe the directory where the resource is stored.
The path may be absolute, or relative to the project.xml file.
String
targetPath
3.0.0+
Describe the resource target path. For example, if you want that resource
appear into a specific package (
org.apache.maven.messages
), you must specify this
element with this value :
org/apache/maven/messages
String
filtering
3.0.0+
Describe if resources are filtered or not.
String
false
3.0.0+
public boolean isFiltering()
{
return !"false".equals( filtering );
}
public void setFiltering( boolean filtering )
{
this.filtering = ( filtering ? "true" : "false" );
}
SourceModification
3.0.0+
Resource
className
3.0.0+
If the class with this name can
not be
loaded, then the includes and excludes specified below
will be applied to the contents of the
sourceDirectory
String
property
3.0.0+
the description
String
UnitTest
3.0.0+
PatternSet
resources
3.0.0+
the description
java.util.List
new ArrayList()
Version
3.0.0
This element describes each of the previous versions of the
project. Each version is described by a
version
element
name
3.0.0
The external version number under which this release was distributed. Examples include:
1.0
,
1.1-alpha1
,
1.2-beta
,
1.3.2
etc.
String
tag
3.0.0
The name given in the version control system (e.g. cvs) used by the project for the source
code associated with this version of the project.
String
id
3.0.0
A unique identifier for a version. This ID is
used to specify the version that
maven:dist
builds.
String
Repository
4.0.0
Repository contains the information needed
for establishing connections with remote repoistory
id
4.0.0
A unique identifier for a repository.
String
name
4.0.0
Human readable name of the repository
String
url
4.0.0
The url of of the repository
String
4.0.0
public boolean equals( Object obj )
{
Repository other = ( Repository ) obj;
boolean retValue = false;
if ( id != null )
{
retValue = id.equals( other.id );
}
return retValue;
}
Site
4.0.0
Site contains the information needed
for deploying websites.
id
4.0.0
A unique identifier for a deployment locataion.
String
name
4.0.0
Human readable name of the deployment location
String
url
4.0.0
The url of of the location where website is deployed
String
GoalDecorator
4.0.0
name
4.0.0
The target goal which should be decorated.
String
attain
4.0.0
The goal which should be injected into the execution chain.
String
GoalDecorator
PreGoal
4.0.0
GoalDecorator
PostGoal
4.0.0
Local
4.0.0
Local contains the information that is specific to the user's
local environment. This would only be expected in a user or site pom,
not a project POM.
repository
4.0.0
The local repository that contains downloaded artifacts.
String
online
4.0.0
Whether to run the build online. If not, no remote repositories are consulted for plugins or dependencies
and this configuration may be used by other plugins requiring online access.
String
true
4.0.0
public boolean isOnline()
{
// Only the value false is offline - anything else is online
return !"false".equals( online );
}
public void setOnline( boolean online )
{
this.online = ( online ? "true" : "false" );
}