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

jia*_*afu 29 java command-line properties maven

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

有官方文章mvn -D吗?

我找不到一个.谢谢.

acd*_*ior 48

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

mvn -DpropertyName=propertyValue clean package
Run Code Online (Sandbox Code Playgroud)
  • 如果propertyName不存在pom.xml,则将设置.
  • 如果propertyName已存在,则pom.xml其值将被作为参数传递的值覆盖-D.

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

mvn -DpropA=valueA -DpropB=valueB -DpropC=valueC clean package
Run Code Online (Sandbox Code Playgroud)

您可以在Maven中查看有关属性的更多详细信息:完整参考.更具体地说,在以下部分:6.1.Maven命令行选项/ 6.1.1.定义属性.

例:

如果你有pom.xml:

<properties>
    <theme>myDefaultTheme</theme>
</properties>
Run Code Online (Sandbox Code Playgroud)

然后mvn -Dtheme=halloween clean packagetheme在执行期间覆盖s值,效果就像你有:

<properties>
    <theme>halloween</theme>
</properties>
Run Code Online (Sandbox Code Playgroud)

  • 我是否需要在 **clean package** 命令之前放置系统属性?我不明白为什么 `mvn clean package -DskipTests` 有效,而 **skipTests** 放在命令 **clean package** 之后 (2认同)
  • @OlivierBoissé 之所以有效,是因为将变量放在目标之前或之后都没有关系,就这么简单。 (2认同)