Reputation: 11865
I know there is a list of all predefined Maven properties (you know like project.build.sourceEncoding
, or project.build.sourceDirectory
). I once saw the list but I just can't find it again.
Upvotes: 158
Views: 157585
Reputation: 21356
Most of these answers provide old links, rely on non-authoritative books, or reference to someone's personal collection. Even the http://maven.apache.org/ref/3-LATEST/maven-model-builder/ referenced in one answer doesn't contain a complete list. Try searching the page for project.build.directory
, for example.
There doesn't seem to exist an authoritative declarative list unfortunately, but I believe there is an authoritative documentation of programmatic access: the API reference for org.apache.maven.model.Model
. For example to discover and/or learn about project.build.directory
:
Get the directory where all files generated by the build are placed. The default value is
target
.
Maven Model and Maven Project Descriptor are also useful.
If someone had the time, they could programmatically walk a minimal org.apache.maven.model.Model
to at least discover the default properties and generate some HTML/Markdown reference page. (I realize that dynamically the model will be unique at build time based upon the project.)
Upvotes: 1
Reputation: 5129
Do you mean this one?
I also moved its content to a GitHub repo:
https://github.com/cko/predefined_maven_properties/blob/master/README.md
Upvotes: 161
Reputation: 7364
This link shows how to list all the active properties: http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html
In summary, add the following plugin definition to your POM, then run mvn install
:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>install</phase>
<configuration>
<target>
<echoproperties />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Upvotes: 5
Reputation: 4859
I got tired of seeing this page with its by-now stale references to defunct Codehaus pages so I asked on the Maven Users mailing list and got some more up-to-date answers.
I would say that the best (and most authoritative) answer contained in my link above is the one contributed by Hervé BOUTEMY:
here is the core reference: http://maven.apache.org/ref/3-LATEST/maven-model-builder/
it does not explain everyting that can be found in POM or in settings, since there are so much info available but it points to POM and settings descriptors and explains everything that is not POM or settings
Upvotes: 9
Reputation: 18304
I think the best place to look is the Super POM.
As an example, at the time of writing, the linked reference shows some of the properties between lines 32 - 48.
The interpretation of this is to follow the XPath as a .
delimited property.
So, for example:
${project.build.testOutputDirectory}
== ${project.build.directory}/test-classes
And:
${project.build.directory}
== ${project.basedir}/target
Thus combining them, we find:
${project.build.testOutputDirectory}
== ${project.basedir}/target/test-classes
(To reference the resources directory(s), see this stackoverflow question)
<project>
<modelVersion>4.0.0</modelVersion>
.
.
.
<build>
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
.
.
.
</build>
.
.
.
</project>
Upvotes: 17
Reputation: 3277
Take a look at section 9.2.: Maven Properties of the free online book Maven: The Complete Reference.
Upvotes: 35
Reputation: 861
Looking at the "effective POM" will probably help too. For instance, if you wanted to know what the path is for ${project.build.sourceDirectory}
you would find the related XML in the effective POM, such as:
<project>
<build>
<sourceDirectory>/my/path</sourceDirectory>
Also helpful - you can do a real time evaluation of properties via the command line execution of mvn help:evaluate
while in the same dir as the POM.
Upvotes: 27