5

I'm trying to use exec-maven-plugin with the java goal. However, I am confused by the difference between the two options:

  • arguments
  • commandlineArgs

If I try using arguments, the call to my java class fails.

The signature of my class being called is:

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

My 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>

However, I get error messages from my VeracodeCommand class indicating that I am missing my -action, -vuser and -vpassword arguments.

However, when I switch it to using a single string commandlineArgs parameter, it works as expected:

        <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>

The problem is that <commandlineArgs> will become unwieldy long. Which is why I would have preferred using the <arguments> parameter.

Can anyone explain to me the difference between the two and/or if/how I can use the arguments parameter?

Eric B.
  • 23,425
  • 50
  • 169
  • 316

1 Answers1

6

Maybe you have to provide your arguments in that way, individually? according to the post in Maven - pass argument to use in exec-maven-plugin

    <arguments>
        <argument>-action</argument>
        <argument>GetAppList</argument>
        <argument>-vuser</argument>
        <argument>${veracode.username}</argument>
        <argument>-vpassword</argument>
        <argument>${veracode.password}</argument>
    </arguments>
Community
  • 1
  • 1
user140547
  • 7,750
  • 3
  • 28
  • 80
  • Looks like that's exactly it. I was about to post the answer myself after doing some digging around in the source code and the running some tests. – Eric B. Jun 29 '15 at 19:12