3

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

我知道 arguments 可选参数可以被 exec.args 环境变量覆盖,而 commandlineArgs 可选参数可以被 exec.args 系统属性覆盖。但是,当涉及到具有此类列表/数组配置属性的其他插件时,我想知道是否有通用的 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

但它不像我预期的那样工作。

4

1 回答 1

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"
于 2020-07-07T22:58:00.820 回答