Package org.codehaus.mojo.exec
Class AbstractExecMojo
- java.lang.Object
-
- org.apache.maven.plugin.AbstractMojo
-
- org.codehaus.mojo.exec.AbstractExecMojo
-
- All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled
,org.apache.maven.plugin.Mojo
- Direct Known Subclasses:
ExecJavaMojo
,ExecMojo
public abstract class AbstractExecMojo extends org.apache.maven.plugin.AbstractMojo
This class is used for unifying functionality between the 2 mojo exec plugins ('java' and 'exec'). It handles parsing the arguments and adding source/test folders.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
addOutputToClasspath
Add project output directory to classpath.private boolean
addResourcesToClasspath
Add project resource directories to classpath.protected java.lang.String
classpathScope
Defines the scope of the classpath passed to the plugin.private java.lang.String
commandlineArgs
Arguments separated by space for the executed program.protected ExecutableDependency
executableDependency
If provided the ExecutableDependency identifies which of the plugin dependencies contains the executable class.protected boolean
includePluginDependencies
Indicates if this plugin's dependencies should be used when executing the main class.private java.util.List<org.apache.maven.artifact.Artifact>
pluginDependencies
protected org.apache.maven.project.MavenProject
project
The enclosing project.protected org.eclipse.aether.RepositorySystem
repositorySystem
private org.apache.maven.execution.MavenSession
session
The current build session instance.private boolean
skip
Skip the execution.private java.io.File
sourceRoot
This folder is added to the list of those folders containing source to be compiled.private java.io.File
testSourceRoot
This folder is added to the list of those folders containing source to be compiled for testing.
-
Constructor Summary
Constructors Constructor Description AbstractExecMojo()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
collectProjectArtifactsAndClasspath(java.util.List<org.apache.maven.artifact.Artifact> artifacts, java.util.List<java.nio.file.Path> theClasspathFiles)
Collects the project artifacts in the specified List and the project specific classpath (build output and build test output) Files in the specified List, depending on the plugin classpathScope value.protected java.util.Set<org.apache.maven.artifact.Artifact>
determineRelevantPluginDependencies()
Determine all plugin dependencies relevant to the executable.protected org.apache.maven.artifact.Artifact
findExecutableArtifact()
Examine the plugin dependencies to find the executable artifact.protected java.util.List<org.apache.maven.artifact.Artifact>
getPluginDependencies()
protected org.apache.maven.execution.MavenSession
getSession()
protected boolean
hasCommandlineArgs()
protected boolean
isSkip()
Check if the execution should be skippedprotected java.lang.String[]
parseCommandlineArgs()
Parses the argument string given by the user.protected void
registerSourceRoots()
Register compile and compile tests source roots if necessaryprivate java.util.Set<org.apache.maven.artifact.Artifact>
resolveExecutableDependencies(org.apache.maven.artifact.Artifact executableArtifact)
Resolve the executable dependencies for the specified project-
Methods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContext
-
-
-
-
Field Detail
-
repositorySystem
@Component protected org.eclipse.aether.RepositorySystem repositorySystem
-
project
@Parameter(defaultValue="${project}", readonly=true) protected org.apache.maven.project.MavenProject project
The enclosing project.
-
session
@Parameter(defaultValue="${session}", readonly=true, required=true) private org.apache.maven.execution.MavenSession session
The current build session instance. This is used for toolchain manager API calls.
-
pluginDependencies
@Parameter(readonly=true, defaultValue="${plugin.artifacts}") private java.util.List<org.apache.maven.artifact.Artifact> pluginDependencies
-
executableDependency
@Parameter protected ExecutableDependency executableDependency
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
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.- Since:
- 1.1-beta-1
-
sourceRoot
@Parameter(property="sourceRoot") private java.io.File sourceRoot
This folder is added to the list of those folders containing source to be compiled. Use this if your plugin generates source code.
-
testSourceRoot
@Parameter(property="testSourceRoot") private java.io.File testSourceRoot
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.
-
commandlineArgs
@Parameter(property="exec.args") private java.lang.String commandlineArgs
Arguments separated by space for the executed program. For example: "-j 20"
-
classpathScope
@Parameter(property="exec.classpathScope", defaultValue="runtime") protected java.lang.String classpathScope
Defines the scope of the classpath passed to the plugin.runtime
(default): Include "compile" and "runtime" scopescompile
: Include "compile", "provided", and "system" scopestest
: Include all scopesprovided
: Include "compile", "runtime", "provided", and "system" scopessystem
: Include "system" scope
-
skip
@Parameter(property="exec.skip", defaultValue="false", alias="skip") private boolean skip
Skip the execution. Starting with version 1.4.0 the former nameskip
has been changed intoexec.skip
.- Since:
- 1.0.1
-
addResourcesToClasspath
@Parameter(property="addResourcesToClasspath", defaultValue="false") private boolean addResourcesToClasspath
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.- Since:
- 1.5.1
-
addOutputToClasspath
@Parameter(property="addOutputToClasspath", defaultValue="true") private boolean addOutputToClasspath
Add project output directory to classpath. This might be undesirable when the exec plugin is run before the compile step. Default istrue
.- Since:
- 1.5.1
-
includePluginDependencies
@Parameter(property="exec.includePluginsDependencies", defaultValue="false") protected boolean includePluginDependencies
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.
- Since:
- 3.4.0
-
-
Method Detail
-
collectProjectArtifactsAndClasspath
protected void collectProjectArtifactsAndClasspath(java.util.List<org.apache.maven.artifact.Artifact> artifacts, java.util.List<java.nio.file.Path> theClasspathFiles)
Collects the project artifacts in the specified List and the project specific classpath (build output and build test output) Files in the specified List, depending on the plugin classpathScope value.- Parameters:
artifacts
- the list where to collect the scope specific artifactstheClasspathFiles
- the list where to collect the scope specific output directories
-
parseCommandlineArgs
protected java.lang.String[] parseCommandlineArgs() throws org.apache.maven.plugin.MojoExecutionException
Parses the argument string given by the user. Strings are recognized as everything between STRING_WRAPPER. PARAMETER_DELIMITER is ignored inside a string. STRING_WRAPPER and PARAMETER_DELIMITER can be escaped using ESCAPE_CHAR.- Returns:
- Array of String representing the arguments
- Throws:
org.apache.maven.plugin.MojoExecutionException
- for wrong formatted arguments
-
hasCommandlineArgs
protected boolean hasCommandlineArgs()
- Returns:
- true of the mojo has command line arguments
-
registerSourceRoots
protected void registerSourceRoots()
Register compile and compile tests source roots if necessary
-
isSkip
protected boolean isSkip()
Check if the execution should be skipped- Returns:
- true to skip
-
getSession
protected final org.apache.maven.execution.MavenSession getSession()
-
getPluginDependencies
protected final java.util.List<org.apache.maven.artifact.Artifact> getPluginDependencies()
-
findExecutableArtifact
protected org.apache.maven.artifact.Artifact findExecutableArtifact() throws org.apache.maven.plugin.MojoExecutionException
Examine the plugin dependencies to find the executable artifact.- Returns:
- an artifact which refers to the actual executable tool (not a POM)
- Throws:
org.apache.maven.plugin.MojoExecutionException
- if no executable artifact was found
-
determineRelevantPluginDependencies
protected java.util.Set<org.apache.maven.artifact.Artifact> determineRelevantPluginDependencies() throws org.apache.maven.plugin.MojoExecutionException
Determine all plugin dependencies relevant to the executable. Takes includePlugins, and the executableDependency into consideration.- Returns:
- a set of Artifact objects. (Empty set is returned if there are no relevant plugin dependencies.)
- Throws:
org.apache.maven.plugin.MojoExecutionException
- if a problem happens resolving the plufin dependencies
-
resolveExecutableDependencies
private java.util.Set<org.apache.maven.artifact.Artifact> resolveExecutableDependencies(org.apache.maven.artifact.Artifact executableArtifact) throws org.apache.maven.plugin.MojoExecutionException
Resolve the executable dependencies for the specified project- Parameters:
executableArtifact
- the executable plugin dependency- Returns:
- a set of Artifacts
- Throws:
org.apache.maven.plugin.MojoExecutionException
- if a failure happens
-
-