exec:java
Full name:
org.codehaus.mojo:exec-maven-plugin:3.1.0:java
Description:
Attributes:
- Requires a Maven project to be executed.
- Requires dependency resolution of artifacts in scope:
test
. - The goal is thread-safe and supports parallel builds.
- Since version:
1.0
.
Required Parameters
Name | Type | Since | Description |
---|---|---|---|
<mainClass> |
String |
1.0 |
The main class to execute. With Java 9 and above you can prefix it with the modulename, e.g. com.greetings/com.greetings.Main Without modulename
the classpath will be used, with modulename a new modulelayer will
be created.User property is: exec.mainClass . |
Optional Parameters
Name | Type | Since | Description |
---|---|---|---|
<addOutputToClasspath> |
boolean |
1.5.1 |
Add project output directory to classpath. This might be
undesirable when the exec plugin is run before the compile step.
Default is true .Default value is: true .User property is: addOutputToClasspath . |
<addResourcesToClasspath> |
boolean |
1.5.1 |
Add project resource directories to classpath. This is especially
useful if the exec plugin is used for a code generator that reads
its settings from the classpath. Default value is: false .User property is: addResourcesToClasspath . |
<additionalClasspathElements> |
List |
1.3 |
Additional elements to be appended to the classpath. |
<arguments> |
String[] |
1.0 |
The class arguments. User property is: exec.arguments . |
<classpathFilenameExclusions> |
List |
3.0.1 |
List of file to exclude from the classpath. It matches the jar
name, for example slf4j-simple-1.7.30.jar . |
<classpathScope> |
String |
1.0 |
Defines the scope of the classpath passed to the plugin. Set to
compile,test,runtime or system depending on your needs. Since
1.1.2, the default value is 'runtime' instead of 'compile'. Default value is: runtime .User property is: exec.classpathScope . |
<cleanupDaemonThreads> |
boolean |
1.1-beta-1 |
Whether to interrupt/join and possibly stop the daemon threads upon
quitting. If this is false , maven does nothing about the daemon
threads. When maven has no more work to do, the VM will normally
terminate any remaining daemon threads.
In certain cases (in particular if maven is embedded), you might
need to keep this enabled to make sure threads are properly cleaned
up to ensure they don't interfere with subsequent activity. In that
case, see Default value is: true .User property is: exec.cleanupDaemonThreads . |
<commandlineArgs> |
String |
1.0 |
Arguments separated by space for the executed program. For example:
"-j 20" User property is: exec.args . |
<daemonThreadJoinTimeout> |
long |
1.1-beta-1 |
This defines the number of milliseconds to wait for daemon threads
to quit following their interruption. This is only taken into account if cleanupDaemonThreads is true . A value
<=0 means to not timeout (i.e. wait indefinitely for threads to
finish). Following a timeout, a warning will be logged.
Note: properly coded threads should terminate upon interruption but some threads may prove problematic: as the VM does interrupt daemon threads, some code may not have been written to handle interruption properly. For example java.util.Timer is known to not handle interruptions in JDK <= 1.6. So it is not possible for us to infinitely wait by default otherwise maven could hang. A sensible default value has been chosen, but this default value may change in the future based on user feedback. Default value is: 15000 .User property is: exec.daemonThreadJoinTimeout . |
<executableDependency> |
ExecutableDependency |
1.1-beta-1 |
If provided the ExecutableDependency identifies which of the plugin
dependencies contains the executable class. This will have the
effect of only including plugin dependencies required by the
identified ExecutableDependency.
If includeProjectDependencies is set to |
<includePluginDependencies> |
boolean |
1.1-beta-1 |
Indicates if this plugin's dependencies should be used when
executing the main class. This is useful when project dependencies
are not appropriate. Using only the plugin dependencies can be
particularly useful when the project is not a java project. For
example a mvn project using the csharp plugins only expects to see
dotnet libraries as dependencies. Default value is: false .User property is: exec.includePluginsDependencies . |
<includeProjectDependencies> |
boolean |
1.1-beta-1 |
Indicates if the project dependencies should be used when executing
the main class. Default value is: true .User property is: exec.includeProjectDependencies . |
<keepAlive> |
boolean |
1.0 |
Deprecated. since 1.1-alpha-1 Default value is: false .User property is: exec.keepAlive . |
<killAfter> |
long |
1.0 |
Deprecated. since 1.1-alpha-1 Default value is: -1 .User property is: exec.killAfter . |
<preloadCommonPool> |
int |
3.0.1 |
Forces the creation of fork join common pool to avoids the threads
to be owned by the isolated thread group and prevent a proper
shutdown. If set to zero the default parallelism is used to
precreate all threads, if negative it is ignored else the value is
the one used to create the fork join threads. Default value is: 0 .User property is: exec.preloadCommonPool . |
<skip> |
boolean |
1.0.1 |
Skip the execution. Starting with version 1.4.0 the former name
skip has been changed into exec.skip .Default value is: false .User property is: exec.skip .Alias is: skip . |
<sourceRoot> |
File |
1.0 |
This folder is added to the list of those folders containing source
to be compiled. Use this if your plugin generates source code. User property is: sourceRoot . |
<stopUnresponsiveDaemonThreads> |
boolean |
1.1-beta-1 |
Wether to call Thread.stop() following a timing out of
waiting for an interrupted thread to finish. This is only taken
into account if cleanupDaemonThreads is
true and the daemonThreadJoinTimeout
threshold has been reached for an uncooperative thread. If this is
false , or if Thread.stop() fails to get
the thread to stop, then a warning is logged and Maven will
continue on while the affected threads (and related objects in
memory) linger on. Consider setting this to true if
you are invoking problematic code that you can't fix. An example is
Timer which doesn't respond to interruption. To have
Timer fixed, vote for this
bug.Default value is: false .User property is: exec.stopUnresponsiveDaemonThreads . |
<systemProperties> |
Property[] |
1.0 |
A list of system properties to be passed. Note: as the execution is
not forked, some system properties required by the JVM cannot be
passed here. Use MAVEN_OPTS or the exec:exec instead. See the user
guide for more information. |
<testSourceRoot> |
File |
1.0 |
This folder is added to the list of those folders containing source
to be compiled for testing. Use this if your plugin generates test
source code. User property is: testSourceRoot . |
Parameter Details
<addOutputToClasspath>
true
.- Type:
boolean
- Since:
1.5.1
- Required:
No
- User Property:
addOutputToClasspath
- Default:
true
<addResourcesToClasspath>
- Type:
boolean
- Since:
1.5.1
- Required:
No
- User Property:
addResourcesToClasspath
- Default:
false
<additionalClasspathElements>
- Type:
java.util.List
- Since:
1.3
- Required:
No
<arguments>
- Type:
java.lang.String[]
- Since:
1.0
- Required:
No
- User Property:
exec.arguments
<classpathFilenameExclusions>
slf4j-simple-1.7.30.jar
.- Type:
java.util.List
- Since:
3.0.1
- Required:
No
<classpathScope>
- Type:
java.lang.String
- Since:
1.0
- Required:
No
- User Property:
exec.classpathScope
- Default:
runtime
<cleanupDaemonThreads>
If this is
false
, maven does nothing about the daemon
threads. When maven has no more work to do, the VM will normally
terminate any remaining daemon threads.
In certain cases (in particular if maven is embedded), you might
need to keep this enabled to make sure threads are properly cleaned
up to ensure they don't interfere with subsequent activity. In that
case, see daemonThreadJoinTimeout
and
stopUnresponsiveDaemonThreads
for further tuning.
- Type:
boolean
- Since:
1.1-beta-1
- Required:
No
- User Property:
exec.cleanupDaemonThreads
- Default:
true
<commandlineArgs>
- Type:
java.lang.String
- Since:
1.0
- Required:
No
- User Property:
exec.args
<daemonThreadJoinTimeout>
This is only taken into account if
cleanupDaemonThreads
is true
. A value
<=0 means to not timeout (i.e. wait indefinitely for threads to
finish). Following a timeout, a warning will be logged.
Note: properly coded threads should terminate upon interruption but some threads may prove problematic: as the VM does interrupt daemon threads, some code may not have been written to handle interruption properly. For example java.util.Timer is known to not handle interruptions in JDK <= 1.6. So it is not possible for us to infinitely wait by default otherwise maven could hang. A sensible default value has been chosen, but this default value may change in the future based on user feedback.
- Type:
long
- Since:
1.1-beta-1
- Required:
No
- User Property:
exec.daemonThreadJoinTimeout
- Default:
15000
<executableDependency>
If includeProjectDependencies is set to true
, all
of the project dependencies will be included on the executable's
classpath. Whether a particular project dependency is a dependency
of the identified ExecutableDependency will be irrelevant to its
inclusion in the classpath.
- Type:
org.codehaus.mojo.exec.ExecutableDependency
- Since:
1.1-beta-1
- Required:
No
<includePluginDependencies>
- Type:
boolean
- Since:
1.1-beta-1
- Required:
No
- User Property:
exec.includePluginsDependencies
- Default:
false
<includeProjectDependencies>
- Type:
boolean
- Since:
1.1-beta-1
- Required:
No
- User Property:
exec.includeProjectDependencies
- Default:
true
<keepAlive>
- Type:
boolean
- Since:
1.0
- Required:
No
- User Property:
exec.keepAlive
- Default:
false
<killAfter>
- Type:
long
- Since:
1.0
- Required:
No
- User Property:
exec.killAfter
- Default:
-1
<mainClass>
With Java 9 and above you can prefix it with the modulename, e.g.
com.greetings/com.greetings.Main
Without modulename
the classpath will be used, with modulename a new modulelayer will
be created.- Type:
java.lang.String
- Since:
1.0
- Required:
Yes
- User Property:
exec.mainClass
<preloadCommonPool>
- Type:
int
- Since:
3.0.1
- Required:
No
- User Property:
exec.preloadCommonPool
- Default:
0
<skip>
skip
has been changed into exec.skip
.- Type:
boolean
- Since:
1.0.1
- Required:
No
- User Property:
exec.skip
- Default:
false
- Alias:
skip
<sourceRoot>
- Type:
java.io.File
- Since:
1.0
- Required:
No
- User Property:
sourceRoot
<stopUnresponsiveDaemonThreads>
Thread.stop()
following a timing out of
waiting for an interrupted thread to finish. This is only taken
into account if cleanupDaemonThreads
is
true
and the daemonThreadJoinTimeout
threshold has been reached for an uncooperative thread. If this is
false
, or if Thread.stop()
fails to get
the thread to stop, then a warning is logged and Maven will
continue on while the affected threads (and related objects in
memory) linger on. Consider setting this to true
if
you are invoking problematic code that you can't fix. An example is
Timer
which doesn't respond to interruption. To have
Timer
fixed, vote for this
bug.- Type:
boolean
- Since:
1.1-beta-1
- Required:
No
- User Property:
exec.stopUnresponsiveDaemonThreads
- Default:
false
<systemProperties>
- Type:
org.codehaus.mojo.exec.Property[]
- Since:
1.0
- Required:
No
<testSourceRoot>
- Type:
java.io.File
- Since:
1.0
- Required:
No
- User Property:
testSourceRoot