Here are described differences between exec:exec and exec:java commands in context of exec-maven-plugin exec-maven-plugin
The exec:exec
and exec:java
goals are both provided by the exec-maven-plugin
and serve different purposes:
exec:exec
- this goal executes an arbitrary command-line executable as part of the Maven build process. It allows you to specify the command to be executed along with any command-line arguments. You can use this goal to run external tools or scripts as part of your build process. For example, you can execute a custom shell script, run a batch file, or execute any other executable program.
Command example:
mvn exec:exec -Dexec.executable=myScript.sh -Dexec.args="arg1 arg2"
exec:java
- this goal is specifically designed to run Java programs during the Maven build process. It allows you to execute a Java class with the specified main method. This goal is useful when you want to run your Java application as part of the Maven build, such as running integration tests or executing standalone applications.
Command example:
mvn exec:java -Dexec.mainClass=com.example.Main
Example of plugin configuration (for exec:java
)
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.temporary.Main</mainClass>
<cleanupDaemonThreads>false</cleanupDaemonThreads>
<arguments>
<argument>-Xms256m -Xmx2g</argument>
</arguments>
</configuration>
</plugin>
In summary, exec:exec
is used to execute any command-line executable, while exec:java
is used specifically to run Java programs.