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

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

mvn -D有官方文章吗?

我找不到。谢谢。

【问题讨论】:

    标签: java maven command-line properties


    【解决方案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é 它之所以有效,是因为将变量放在目标之前或之后都没有关系,就这么简单。
    猜你喜欢
    • 2016-04-15
    • 2017-07-13
    • 2016-01-12
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2011-08-20
    • 2020-03-16
    • 2021-05-03
    相关资源
    最近更新 更多