Reputation: 16265
In maven 2.x, how would one set a plugin's property on the command line instead of in the <configuration> of that plugin in the pom or in settings.xml?
For example, if I was using mvn dependency:copy-dependencies
(seen here) how can I set the useRepositoryLayout property without touching either the pom or my settings.xml?
Thanks!
Upvotes: 35
Views: 43801
Reputation: 1075
The other answers here were not clear to me. This is the way I understand it:
If the plugin code uses a system property for its parameter, then you can define the value on the command line.
There are 3 different ways you can accomplish this in the plugin code:
@parameter expression="${aSystemProperty}"
@parameter default-value="${anExpression}"
@parameter property="aSystemProperty"
If any or a combination of these methods are used in the plugin code for a particular property, then you can specify a value for the plugin parameter, on the command line. Above code was taken from maven docs here.
If you are using a plugin with the above code, you could specify a value for your property using the following command:
mvn -DaSystemProperty=my-value <goal-here>
Upvotes: 2
Reputation: 16265
Answer was right in front of me in the copy-dependencies mojo docs (I even linked to it). The documentation for the property includes the Expression you can refer to it by.
useRepositoryLayout: Place each artifact in the same directory layout as a default repository. example: /outputDirectory/junit/junit/3.8.1/junit-3.8.1.jar
* Type: boolean * Since: 2.0-alpha-2 * Required: No * Expression: ${mdep.useRepositoryLayout} * Default: false
To set this property from command line you need to run
mvn -Dmdep.useRepositoryLayout=true <goals go here>
Upvotes: 26
Reputation: 649
Define the properties as arbitrary properties ... not the standard maven props such as version. In my case I defined a new property build.version:
<properties> build.version=unknown </properties>
I use the property:
<warName>${build.version}</warName>
I define the property:
mvn -P prod -Dbuild.version=app_name-branch_name-build_number package
Upvotes: 16
Reputation: 30448
Usually you set maven properties using the same syntax as java system properties. Have you tried the following line?
mvn -DuseRepositoryLayout=true dependency:copy-dependencies
Upvotes: 6