如何使用 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
作为参数传递的值覆盖。
要发送多个变量,请使用多个空格分隔-D
s:
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
将在此执行期间覆盖theme
s 的值,具有效果,就像你有:
<properties>
<theme>halloween</theme>
</properties>
【讨论】:
如果我想设置更多的一个属性怎么写呢? -Dxx=11 -Dyy=2? @jiafu 是的,只是空格分隔 是的,正如#earcam 所说,多个空格分隔-D
s 是正确的方法,就像您所做的那样:-Dxx=11 -Dyy=2
。现在,如果您有几个通常一起使用的变量,您应该考虑使用配置文件。检查我在答案中发布的那个参考链接的项目"6.1.3. Using Build Profiles"。
我需要在clean package命令之前放置系统属性吗?我不明白为什么 mvn clean package -DskipTests
有效,而 skipTests 放在命令 clean package 之后
@OlivierBoissé 它之所以有效,是因为将变量放在目标之前或之后都没有关系,就这么简单。以上是关于如何使用 mvn -D 通过命令行在 Maven 中设置(多个)属性?的主要内容,如果未能解决你的问题,请参考以下文章