如何使用 mvn -D 通过命令行在 Maven 中设置(多个)属性?

Posted

技术标签:

【中文标题】如何使用 mvn -D 通过命令行在 Maven 中设置(多个)属性?【英文标题】:How to use the mvn -D to set (multiple) properties in Maven via command line? 【发布时间】:2013-06-24 08:19:39 【问题描述】:

如何在maven中使用mvn -D?如何使用它设置一个属性(或多个属性)?

mvn -D有官方文章吗?

我找不到。谢谢。

【问题讨论】:

【参考方案1】:

使用-D 通过命令行设置属性的正确方法是:

mvn -DpropertyName=propertyValue clean package
如果propertyName 不存在于pom.xml 中,则会对其进行设置。 如果pom.xml 中已存在propertyName,则其值将被-D 作为参数传递的值覆盖

要发送多个变量,请使用多个空格分隔-Ds:

mvn -DpropA=valueA -DpropB=valueB -DpropC=valueC clean package

您可以在Maven: The Complete Reference 中查看有关属性的更多详细信息。更具体地说,在部分:6.1. Maven Command Line Options/6.1.1. Defining Properties

示例:

如果你有pom.xml:

<properties>
    <theme>myDefaultTheme</theme>
</properties>

然后mvn -Dtheme=halloween clean package 将在此执行期间覆盖themes 的值,具有效果,就像你有:

<properties>
    <theme>halloween</theme>
</properties>

【讨论】:

如果我想设置更多的一个属性怎么写呢? -Dxx=11 -Dyy=2? @jiafu 是的,只是空格分隔 是的,正如#earcam 所说,多个空格分隔-Ds 是正确的方法,就像您所做的那样:-Dxx=11 -Dyy=2。现在,如果您有几个通常一起使用的变量,您应该考虑使用配置文件。检查我在答案中发布的那个参考链接的项目"6.1.3. Using Build Profiles"。 我需要在clean package命令之前放置系统属性吗?我不明白为什么 mvn clean package -DskipTests 有效,而 skipTests 放在命令 clean package 之后 @OlivierBoissé 它之所以有效,是因为将变量放在目标之前或之后都没有关系,就这么简单。

以上是关于如何使用 mvn -D 通过命令行在 Maven 中设置(多个)属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 maven mvn test 命令行运行动态 testng.xml?

Java的Maven工具,如何使用mvn卸载包?

Linux下安装maven(mvn命令)

mvn常用命令

通过命令行在 Jboss 7.0.1 中部署战争

idea mvn 踩坑 使用mvn 打包