exec-maven-plugin arguments 和 commandlineArgs 之间的区别

exec-maven-plugin difference between arguments and commandlineArgs

我正在尝试使用具有 java 目标的 exec-maven-plugin。但是,我对这两个选项之间的区别感到困惑:

如果我尝试使用参数,对我的 java class 的调用会失败。

我的class被调用的签名是:

 public static void main(String[] args)
  {
    VeracodeParser parser = new VeracodeParser();
    parser.parse(args);
  }

我的pom:

        <plugin>
            <artifactId>exec-maven-plugin</artifactId>
            <groupId>org.codehaus.mojo</groupId>
            <executions>
                <execution>
                    <id>Zip packaging and deployment</id>
                    <phase>process-sources</phase>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.veracode.apiwrapper.cli.VeracodeCommand</mainClass>
                        <arguments>
                            <argument>-action GetAppList</argument>
                            <argument>-vuser ${veracode.username}</argument>
                            <argument>-vpassword ${veracode.password}</argument>
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>

但是,我从 VeracodeCommand class 收到错误消息,表明我缺少 -action-vuser-vpassword 参数。

然而,当我将其切换为使用单个字符串 commandlineArgs 参数时,它按预期工作:

        <plugin>
            <artifactId>exec-maven-plugin</artifactId>
            <groupId>org.codehaus.mojo</groupId>
            <executions>
                <execution>
                    <id>Zip packaging and deployment</id>
                    <phase>process-sources</phase>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.veracode.apiwrapper.cli.VeracodeCommand</mainClass>
                        <commandlineArgs>-action UploadFile -vuser ${veracode.username} -vpassword ${veracode.password} -appid ${veracode.appId} -filepath ${project.build.directory}/dependency/sbip_ear_pres.ear</commandlineArgs>
                    </configuration>
                </execution>
            </executions>
        </plugin>

问题是 <commandlineArgs> 会变得笨重。这就是为什么我更喜欢使用 <arguments> 参数。

谁能给我解释一下两者的区别and/orif/how我可以使用arguments参数吗?

也许你必须以这种方式单独提供你的论点? 根据 Maven - pass argument to use in exec-maven-plugin

中的 post
    <arguments>
        <argument>-action</argument>
        <argument>GetAppList</argument>
        <argument>-vuser</argument>
        <argument>${veracode.username}</argument>
        <argument>-vpassword</argument>
        <argument>${veracode.password}</argument>
    </arguments>