在Maven 2中通过命令行设置插件属性

33
在maven 2.x中,如何在命令行上设置插件的属性,而不是在pom文件或settings.xml文件的插件的中设置? 例如,如果我正在使用mvn dependency:copy-dependencies(在这里看到),如何设置useRepositoryLayout属性,而不触及pom文件或我的settings.xml文件? 谢谢!
4个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
25

答案就在复制依赖关系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>

17
为了澄清,您需要类似这样的东西:mvn -Dmdep.useRepositoryLayout=true dependency:copy-dependencies - Steve

15

将属性定义为任意属性,而不是标准的Maven属性,比如版本号。在我的情况下,我定义了一个新属性build.version:

<properties> build.version=unknown </properties>

我使用了这个属性:

<warName>${build.version}</warName>

我定义了这个属性:

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

这是一个不错的链接:http://www.sonatype.com/books/mvnref-book/reference/resource-filtering-sect-properties.html#resource-filtering-sect-user-defined - bcolfer
1
虽然最初用户的具体问题得到了回答,但本次回复回答了帖子标题提出的通用问题。谢谢! - Rob V

6
通常你可以使用与Java系统属性相同的语法来设置Maven属性。你尝试过以下这行代码吗?
mvn -DuseRepositoryLayout=true dependency:copy-dependencies

5
只有插件作者用表达式注释过变量,这种方法才有效。这些注释将显示在插件文档中,就像上面的答案中所示的那样。 - Brian Fox

1

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

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

在插件代码中,有三种不同的方法可以实现此目的:

@parameter expression="${aSystemProperty}" 
@parameter default-value="${anExpression}"
@parameter property="aSystemProperty"
如果插件代码针对特定属性使用了这些方法中的任何一种或组合,则可以在命令行上为插件参数指定值。上述代码来自maven文档。 如果您正在使用包含上述代码的插件,则可以使用以下命令指定属性的值:
mvn -DaSystemProperty=my-value <goal-here>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,