Maven列表/数组属性命令行覆盖

时间:2019-07-18 22:10:33

标签: maven command-line maven-exec-plugin

是否可以使用系统属性方法传递Maven列表/数组属性(例如maven-exec-plugin参数可选参数)?

我知道exec.args环境变量可以覆盖arguments可选参数,而exec.args系统属性可以覆盖commandlineArgs可选参数。 但是,我想知道是否存在一种通用的Maven命令行方式,当涉及具有此类列表/数组配置属性的其他插件时,是否可以使用系统属性来覆盖此类插件配置的列表/数组属性?

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>execute somebinary</id>
            <phase>compile</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>somebinary</executable>
                <arguments>
                    <argument>arg1</argument>
                    <argument>arg2</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

我希望通过以下命令来做到这一点:

mvn exec:exec -Dexec.arguments=arg1,arg2

但是它不像我期望的那样。

1 个答案:

答案 0 :(得分:1)

只需将参数列表输入双引号“”即可。 例: pom.mxl

<project .....>

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.logicbig.example</groupId>
    <artifactId>mvn-exec-java-example</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

主班

public class MyMainClass {
  public static void main(String[] args) {
      Arrays.stream(args).forEach(System.out::println);
  }
}

命令行参数

mvn -q clean compile exec:java -Dexec.mainClass="com.logicbig.example.MyMainClass" -Dexec.args="myArg1 myArg2"