在maven 2.x中,如何在命令行而不是< configuration>中设置插件的属性?在pom或settings.xml中插件?
例如,如果我使用mvn dependency:copy-dependencies
(seen here),如何在不触及pom或my settings.xml的情况下设置useRepositoryLayout属性?
谢谢!
答案 0 :(得分:19)
在复制依赖性mojo文档(我甚至链接到它)中,答案就在我面前。该属性的文档包括您可以通过它引用的表达式。
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 <goals go here>
答案 1 :(得分:14)
将属性定义为任意属性...而不是标准的maven道具,例如版本。在我的例子中,我定义了一个新属性build.version:
<properties> build.version=unknown </properties>
我使用属性:
<warName>${build.version}</warName>
我定义了属性:
mvn -P prod -Dbuild.version=app_name-branch_name-build_number package
答案 2 :(得分:6)
通常使用与java系统属性相同的语法设置maven属性。你试过以下这行吗?
mvn -DuseRepositoryLayout=true dependency:copy-dependencies
答案 3 :(得分:0)
这里的其他答案对我来说并不清楚。这是我理解的方式:
如果插件代码为其参数使用系统属性,则可以在命令行上定义该值。
您可以通过3种不同的方式在插件代码中实现此目的:
@parameter expression="${aSystemProperty}"
@parameter default-value="${anExpression}"
@parameter property="aSystemProperty"
如果在特定属性的插件代码中使用了这些方法中的任何一个或组合,则可以在命令行上为插件参数指定值。以上代码取自maven docs here。
如果您使用带有上述代码的插件,则可以使用以下命令为您的属性指定值:
mvn -DaSystemProperty=my-value <goal-here>