Overriding Properties
You have seen that specifying a property on the command line overrides a property defined in project.properties, and you've seen that plug-in properties are superseded by project.properties. Now that you've seen property overrides in action, take a look at how you can use property overriding to customize behavior for a specific project or a specific user.
How do I do that?
In the "Customizing Plug-in Behavior" lab earlier in this
chapter, you set the maven.axis.serverside
variable in your
project.properties file. Try
running the axis:wsdl2java
goal and
setting the maven.axis.serverside
property to true
:
maven axis:wsdl2java -Dmaven.axis.serverside=true
If you run this, you should see Maven generating a number of
different classes and some deployment descriptors for an Apache Axis
SOAP service. By setting the maven.axis.serverside
property from the
command line, you have just overridden the value specified in
project.properties. Properties
set from the command line take precedence over properties set anywhere
else in Maven.
In fact, Maven has a hierarchy of properties files which you can use to customize a build for a specific project or a specific user. Maven reads properties from the following sources, in the order shown:
- ${basedir}/project.properties
This file is a sibling to both maven.xml and project.xml. This file customizes behavior for a particular project.
- ${basedir}/build.properties
This file is also a sibling to maven.xml and project.xml, but this file ...
Get Maven: A Developer's Notebook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.