|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.maven.plugin.AbstractMojo
org.codehaus.mojo.exec.AbstractExecMojo
org.codehaus.mojo.exec.ExecJavaMojo
public class ExecJavaMojo
Executes the supplied java class in the current VM with the enclosing project's dependencies as classpath.
Nested Class Summary | |
---|---|
(package private) class |
ExecJavaMojo.IsolatedThreadGroup
a ThreadGroup to isolate execution and collect exceptions. |
Field Summary | |
---|---|
private String[] |
arguments
The class arguments. |
private org.apache.maven.artifact.factory.ArtifactFactory |
artifactFactory
|
private org.apache.maven.artifact.resolver.ArtifactResolver |
artifactResolver
|
private boolean |
cleanupDaemonThreads
Wether to interrupt/join and possibly stop the daemon threads upon quitting. |
private long |
daemonThreadJoinTimeout
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 . |
private ExecutableDependency |
executableDependency
If provided the ExecutableDependency identifies which of the plugin dependencies contains the executable class. |
private boolean |
includePluginDependencies
Indicates if this plugin's dependencies should be used when executing the main class. |
private boolean |
includeProjectDependencies
Indicates if the project dependencies should be used when executing the main class. |
private boolean |
keepAlive
Deprecated. since 1.1-alpha-1 |
private long |
killAfter
Deprecated. since 1.1-alpha-1 |
private org.apache.maven.artifact.repository.ArtifactRepository |
localRepository
|
private String |
mainClass
The main class to execute. |
private org.apache.maven.artifact.metadata.ArtifactMetadataSource |
metadataSource
|
private Properties |
originalSystemProperties
|
private List |
pluginDependencies
|
private org.apache.maven.project.MavenProjectBuilder |
projectBuilder
|
private List |
remoteRepositories
|
private boolean |
stopUnresponsiveDaemonThreads
Wether to call Thread.stop() following a timing out of waiting for an interrupted thread to finish. |
private Property[] |
systemProperties
A list of system properties to be passed. |
Fields inherited from class org.codehaus.mojo.exec.AbstractExecMojo |
---|
classpathScope, project |
Fields inherited from interface org.apache.maven.plugin.Mojo |
---|
ROLE |
Constructor Summary | |
---|---|
ExecJavaMojo()
|
Method Summary | |
---|---|
private void |
addRelevantPluginDependenciesToClasspath(List path)
Add any relevant project dependencies to the classpath. |
private void |
addRelevantProjectDependenciesToClasspath(List path)
Add any relevant project dependencies to the classpath. |
private Set |
determineRelevantPluginDependencies()
Determine all plugin dependencies relevant to the executable. |
void |
execute()
Execute goal. |
private org.apache.maven.artifact.Artifact |
findExecutableArtifact()
Examine the plugin dependencies to find the executable artifact. |
private Collection |
getActiveThreads(ThreadGroup threadGroup)
|
private ClassLoader |
getClassLoader()
Set up a classloader for the execution of the main class. |
private org.apache.maven.artifact.Artifact |
getExecutablePomArtifact(org.apache.maven.artifact.Artifact executableArtifact)
Get the artifact which refers to the POM of the executable artifact. |
private void |
joinNonDaemonThreads(ThreadGroup threadGroup)
|
private void |
joinThread(Thread thread,
long timeoutMsecs)
|
private Set |
resolveExecutableDependencies(org.apache.maven.artifact.Artifact executablePomArtifact)
Resolve the executable dependencies for the specified project |
private void |
setSystemProperties()
Pass any given system properties to the java system properties. |
private void |
terminateThreads(ThreadGroup threadGroup)
|
private void |
waitFor(long millis)
Stop program execution for nn millis. |
Methods inherited from class org.codehaus.mojo.exec.AbstractExecMojo |
---|
collectProjectArtifactsAndClasspath, hasCommandlineArgs, isSkip, parseCommandlineArgs, registerSourceRoots |
Methods inherited from class org.apache.maven.plugin.AbstractMojo |
---|
getLog, getPluginContext, setLog, setPluginContext |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private org.apache.maven.artifact.resolver.ArtifactResolver artifactResolver
private org.apache.maven.artifact.factory.ArtifactFactory artifactFactory
private org.apache.maven.artifact.metadata.ArtifactMetadataSource metadataSource
private org.apache.maven.artifact.repository.ArtifactRepository localRepository
private List remoteRepositories
private org.apache.maven.project.MavenProjectBuilder projectBuilder
private List pluginDependencies
private String mainClass
private String[] arguments
private Property[] systemProperties
private boolean keepAlive
private boolean includeProjectDependencies
private boolean includePluginDependencies
private ExecutableDependency executableDependency
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.
private boolean cleanupDaemonThreads
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.
private long daemonThreadJoinTimeout
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.
private boolean 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.
private long killAfter
private Properties originalSystemProperties
Constructor Detail |
---|
public ExecJavaMojo()
Method Detail |
---|
public void execute() throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException
org.apache.maven.plugin.MojoExecutionException
- execution of the main class or one of the threads it generated failed.
org.apache.maven.plugin.MojoFailureException
- something bad happened...private void joinNonDaemonThreads(ThreadGroup threadGroup)
private void joinThread(Thread thread, long timeoutMsecs)
private void terminateThreads(ThreadGroup threadGroup)
private Collection getActiveThreads(ThreadGroup threadGroup)
private void setSystemProperties()
private ClassLoader getClassLoader() throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
- if a problem happensprivate void addRelevantPluginDependenciesToClasspath(List path) throws org.apache.maven.plugin.MojoExecutionException
path
- classpath of URL
objects
org.apache.maven.plugin.MojoExecutionException
- if a problem happensprivate void addRelevantProjectDependenciesToClasspath(List path) throws org.apache.maven.plugin.MojoExecutionException
path
- classpath of URL
objects
org.apache.maven.plugin.MojoExecutionException
- if a problem happensprivate Set determineRelevantPluginDependencies() throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
- if a problem happens resolving the plufin dependenciesprivate org.apache.maven.artifact.Artifact getExecutablePomArtifact(org.apache.maven.artifact.Artifact executableArtifact)
executableArtifact
- this artifact refers to the actual assembly.
private org.apache.maven.artifact.Artifact findExecutableArtifact() throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
- if no executable artifact was foundprivate Set resolveExecutableDependencies(org.apache.maven.artifact.Artifact executablePomArtifact) throws org.apache.maven.plugin.MojoExecutionException
executablePomArtifact
- the project's POM
org.apache.maven.plugin.MojoExecutionException
- if a failure happensprivate void waitFor(long millis)
millis
- the number of millis-seconds to wait for,
0
stops program forever.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |