在maven 2的命令行上设置插件的属性

在maven 2.x中,如何在命令行中设置插件的属性,而不是在pom或settings.xml中的该插件的中设置?

例如,如果我使用的是mvn dependency:copy-dependencies ( 在这里看到 )如何在不触及pom或my settings.xml的情况下设置useRepositoryLayout属性?

谢谢!

答案就在我面前的复制依赖mojo docs(我甚至链接到它)。 该属性的文档包括您可以引用它的表达式。

useRepositoryLayout:将每个工件放在与默认存储库相同的目录布局中。 例如:/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 

要从命令行设置此属性,您需要运行

 mvn -Dmdep.useRepositoryLayout=true  

将属性定义为任意属性…而不是标准的maven道具,例如版本。 在我的例子中,我定义了一个新属性build.version:

  build.version=unknown  

我使用的属性:

 ${build.version} 

我定义了属性:

 mvn -P prod -Dbuild.version=app_name-branch_name-build_number package 

通常使用与java系统属性相同的语法设置maven属性。 你试过以下这行吗?

 mvn -DuseRepositoryLayout=true dependency:copy-dependencies 

这里的其他答案对我来说并不清楚。 这是我理解的方式:

如果插件代码为其参数使用系统属性,则可以在命令行上定义该值。

在插件代码中有3种不同的方法可以实现这一点:

 @parameter expression="${aSystemProperty}" @parameter default-value="${anExpression}" @parameter property="aSystemProperty" 

如果在特定属性的插件代码中使用了这些方法中的任何一个或组合,则可以在命令行上为插件参数指定值。 上面的代码来自maven docs 。

如果您使用带有上述代码的插件,则可以使用以下命令为属性指定值:

 mvn -DaSystemProperty=my-value