@Mojo(name="process",
defaultPhase=GENERATE_RESOURCES,
threadSafe=true)
public class ProcessRemoteResourcesMojo
extends org.apache.maven.plugin.AbstractMojo
implements org.apache.velocity.runtime.log.LogChute
Pull down resourceBundles containing remote resources and process the resources contained inside. When that is done the resources are injected into the current (in-memory) Maven project, making them available to the process-resources phase.
Resources that end in ".vm" are treated as velocity templates. For those, the ".vm" is stripped off for the final artifact name and it's fed through velocity to have properties expanded, conditions processed, etc...
Resources that don't end in ".vm" are copied "as is".Modifier and Type | Class and Description |
---|---|
(package private) class |
ProcessRemoteResourcesMojo.OrganizationComparator |
(package private) class |
ProcessRemoteResourcesMojo.ProjectComparator |
Modifier and Type | Field and Description |
---|---|
private java.io.File |
appendedResourcesDirectory
The directory containing extra information appended to the generated resources.
|
private org.apache.maven.artifact.factory.ArtifactFactory |
artifactFactory
Artifact factory, needed to create artifacts.
|
private org.apache.maven.artifact.resolver.ArtifactResolver |
artifactResolver
Artifact Resolver, needed to resolve and download the
resourceBundles . |
private boolean |
attached
Deprecated.
Please use
attachToMain and attachToTest instead. |
private boolean |
attachToMain
Attaches the resources to the main build of the project as a resource
directory.
|
private boolean |
attachToTest
Attaches the resources to the test build of the project as a resource
directory.
|
protected java.io.File |
basedir
Used for calculation of execution-root for
runOnlyAtExecutionRoot . |
protected org.apache.maven.ProjectDependenciesResolver |
dependencyResolver |
protected java.lang.String |
encoding
The character encoding scheme to be applied when filtering resources.
|
protected java.lang.String |
excludeArtifactIds
Comma separated list of Artifact names too exclude.
|
protected java.lang.String |
excludeGroupIds
Comma separated list of GroupId Names to exclude.
|
protected java.lang.String |
excludeScope
Scope to exclude.
|
protected boolean |
excludeTransitive
If we should exclude transitive dependencies
|
private org.apache.maven.shared.filtering.MavenFileFilter |
fileFilter
Filtering support, for local resources that override those in the remote bundle.
|
protected java.util.List<java.lang.String> |
filterDelimiters
In cases where a local resource overrides one from a remote resource bundle, that resource
should be filtered if the resource set specifies it.
|
protected java.lang.String |
includeArtifactIds
Comma separated list of Artifact names to include.
|
protected java.lang.String |
includeGroupIds
Comma separated list of GroupIds to include.
|
protected boolean |
includeProjectProperties
Whether to include properties defined in the project when filtering resources.
|
protected java.lang.String |
includeScope
Scope to include.
|
private org.apache.maven.project.inheritance.ModelInheritanceAssembler |
inheritanceAssembler
Merges supplemental data model with artifact
metadata.
|
private org.apache.maven.artifact.repository.ArtifactRepository |
localRepository
The local repository taken from Maven's runtime.
|
private org.codehaus.plexus.resource.ResourceManager |
locator |
private org.apache.maven.project.MavenProjectBuilder |
mavenProjectBuilder
ProjectBuilder, needed to create projects from the artifacts.
|
private org.apache.maven.execution.MavenSession |
mavenSession
The Maven session.
|
private java.io.File |
outputDirectory
The directory where processed resources will be placed for packaging.
|
private org.apache.maven.project.MavenProject |
project
The current Maven project.
|
private java.util.Map<java.lang.String,java.lang.Object> |
properties
Additional properties to be passed to velocity.
|
private java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> |
remoteArtifactRepositories
List of Remote Repositories used by the resolver.
|
private java.lang.String[] |
resolveScopes
When resolving project dependencies, specify the scopes to include.
|
private java.util.List<java.lang.String> |
resourceBundles
The resource bundles that will be retrieved and processed,
expressed with
groupId:artifactId:version[:type[:classifier]] format. |
private java.util.List<org.apache.maven.model.Resource> |
resources
The list of resources defined for the project.
|
protected boolean |
runOnlyAtExecutionRoot
If true, only generate resources in the directory of the root project in a multimodule build.
|
private boolean |
skip
Skip remote-resource processing
|
private java.util.List<java.lang.String> |
supplementalModelArtifacts
List of artifacts that are added to the search path when looking
for supplementalModels, expressed with
groupId:artifactId:version[:type[:classifier]] format. |
private java.lang.String[] |
supplementalModels
Supplemental model data.
|
private java.util.Map<java.lang.String,org.apache.maven.model.Model> |
supplementModels
Map of artifacts to supplemental project object models.
|
private static java.lang.String |
TEMPLATE_SUFFIX |
protected boolean |
useDefaultFilterDelimiters |
private org.apache.velocity.app.VelocityEngine |
velocity |
Constructor and Description |
---|
ProcessRemoteResourcesMojo() |
Modifier and Type | Method and Description |
---|---|
private void |
addSupplementalModelArtifacts() |
private java.util.Set<org.apache.maven.artifact.Artifact> |
aggregateProjectDependencyArtifacts() |
protected void |
configureVelocityContext(org.apache.velocity.VelocityContext context) |
protected boolean |
copyResourceIfExists(java.io.File file,
java.lang.String relFileName,
org.apache.velocity.VelocityContext context) |
private java.util.List<java.io.File> |
downloadBundles(java.util.List<java.lang.String> bundles) |
void |
execute() |
private static java.lang.String |
generateSupplementMapKey(java.lang.String groupId,
java.lang.String artifactId) |
private java.lang.String |
getLocationTemp(java.lang.String name)
Convenience method to get the location of the specified file name.
|
protected java.util.List<org.apache.maven.project.MavenProject> |
getProjects() |
protected java.util.Map<org.apache.maven.model.Organization,java.util.List<org.apache.maven.project.MavenProject>> |
getProjectsSortedByOrganization(java.util.List<org.apache.maven.project.MavenProject> projects) |
protected org.apache.maven.model.Model |
getSupplement(org.codehaus.plexus.util.xml.Xpp3Dom supplementModelXml) |
void |
init(org.apache.velocity.runtime.RuntimeServices rs) |
private void |
initalizeClassloader(RemoteResourcesClassLoader cl,
java.util.List<java.io.File> artifacts) |
private boolean |
isExecutionRoot() |
boolean |
isLevelEnabled(int level) |
private java.util.Map<java.lang.String,org.apache.maven.model.Model> |
loadSupplements(java.lang.String[] models) |
void |
log(int level,
java.lang.String message) |
void |
log(int level,
java.lang.String message,
java.lang.Throwable t) |
protected org.apache.maven.model.Model |
mergeModels(org.apache.maven.model.Model parent,
org.apache.maven.model.Model child) |
protected void |
processResourceBundles(RemoteResourcesClassLoader classLoader,
org.apache.velocity.VelocityContext context) |
private java.util.Set<org.apache.maven.artifact.Artifact> |
resolveProjectArtifacts() |
private org.apache.maven.shared.filtering.MavenFileFilterRequest |
setupRequest(org.apache.maven.model.Resource resource,
java.io.File source,
java.io.File file) |
protected void |
validate() |
private static final java.lang.String TEMPLATE_SUFFIX
@Parameter protected java.util.List<java.lang.String> filterDelimiters
In cases where a local resource overrides one from a remote resource bundle, that resource should be filtered if the resource set specifies it. In those cases, this parameter defines the list of delimiters for filterable expressions. These delimiters are specified in the form 'beginToken*endToken'. If no '*' is given, the delimiter is assumed to be the same for start and end.
So, the default filtering delimiters might be specified as:
<delimiters> <delimiter>${*}</delimiter> <delimiter>@</delimiter> </delimiters>Since the '@' delimiter is the same on both ends, we don't need to specify '@*@' (though we can).
@Parameter(defaultValue="true") protected boolean useDefaultFilterDelimiters
@Parameter(defaultValue="false") protected boolean runOnlyAtExecutionRoot
@Parameter(defaultValue="${basedir}", readonly=true, required=true) protected java.io.File basedir
runOnlyAtExecutionRoot
.@Parameter(property="encoding", defaultValue="${project.build.sourceEncoding}") protected java.lang.String encoding
@Parameter(defaultValue="${localRepository}", readonly=true, required=true) private org.apache.maven.artifact.repository.ArtifactRepository localRepository
@Parameter(defaultValue="${project.remoteArtifactRepositories}", readonly=true, required=true) private java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> remoteArtifactRepositories
@Component private org.apache.maven.project.MavenProject project
@Parameter(defaultValue="${project.build.directory}/maven-shared-archive-resources") private java.io.File outputDirectory
@Parameter(defaultValue="${basedir}/src/main/appended-resources") private java.io.File appendedResourcesDirectory
@Parameter private java.lang.String[] supplementalModels
@Parameter private java.util.List<java.lang.String> supplementalModelArtifacts
groupId:artifactId:version[:type[:classifier]]
format.private java.util.Map<java.lang.String,org.apache.maven.model.Model> supplementModels
@Component private org.apache.maven.project.inheritance.ModelInheritanceAssembler inheritanceAssembler
@Parameter(required=true) private java.util.List<java.lang.String> resourceBundles
groupId:artifactId:version[:type[:classifier]]
format.@Parameter(property="remoteresources.skip", defaultValue="false") private boolean skip
@Deprecated @Parameter(defaultValue="true") private boolean attached
attachToMain
and attachToTest
instead.@Parameter(defaultValue="true", property="attachToMain") private boolean attachToMain
@Parameter(defaultValue="true", property="attachToTest") private boolean attachToTest
@Parameter private java.util.Map<java.lang.String,java.lang.Object> properties
@Parameter(defaultValue="false") protected boolean includeProjectProperties
@Parameter(defaultValue="${project.resources}", readonly=true, required=true) private java.util.List<org.apache.maven.model.Resource> resources
@Component private org.apache.maven.artifact.resolver.ArtifactResolver artifactResolver
resourceBundles
.@Component private org.apache.maven.shared.filtering.MavenFileFilter fileFilter
@Component private org.apache.maven.artifact.factory.ArtifactFactory artifactFactory
@Component private org.apache.maven.execution.MavenSession mavenSession
@Component(role=org.apache.maven.project.MavenProjectBuilder.class) private org.apache.maven.project.MavenProjectBuilder mavenProjectBuilder
@Component private org.codehaus.plexus.resource.ResourceManager locator
@Parameter(property="includeScope", defaultValue="runtime") protected java.lang.String includeScope
@Parameter(property="excludeScope", defaultValue="") protected java.lang.String excludeScope
@Parameter private java.lang.String[] resolveScopes
@Parameter(property="excludeArtifactIds", defaultValue="") protected java.lang.String excludeArtifactIds
@Parameter(property="includeArtifactIds", defaultValue="") protected java.lang.String includeArtifactIds
@Parameter(property="excludeGroupIds", defaultValue="") protected java.lang.String excludeGroupIds
@Parameter(property="includeGroupIds", defaultValue="") protected java.lang.String includeGroupIds
@Parameter(property="excludeTransitive", defaultValue="false") protected boolean excludeTransitive
@Component(hint="default") protected org.apache.maven.ProjectDependenciesResolver dependencyResolver
private org.apache.velocity.app.VelocityEngine velocity
public void execute() throws org.apache.maven.plugin.MojoExecutionException
execute
in interface org.apache.maven.plugin.Mojo
org.apache.maven.plugin.MojoExecutionException
private boolean isExecutionRoot()
private void addSupplementalModelArtifacts() throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected java.util.List<org.apache.maven.project.MavenProject> getProjects() throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
private java.util.Set<org.apache.maven.artifact.Artifact> resolveProjectArtifacts() throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
private java.util.Set<org.apache.maven.artifact.Artifact> aggregateProjectDependencyArtifacts() throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected java.util.Map<org.apache.maven.model.Organization,java.util.List<org.apache.maven.project.MavenProject>> getProjectsSortedByOrganization(java.util.List<org.apache.maven.project.MavenProject> projects) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected boolean copyResourceIfExists(java.io.File file, java.lang.String relFileName, org.apache.velocity.VelocityContext context) throws java.io.IOException, org.apache.maven.plugin.MojoExecutionException
java.io.IOException
org.apache.maven.plugin.MojoExecutionException
private org.apache.maven.shared.filtering.MavenFileFilterRequest setupRequest(org.apache.maven.model.Resource resource, java.io.File source, java.io.File file)
protected void validate() throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected void configureVelocityContext(org.apache.velocity.VelocityContext context) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
private java.util.List<java.io.File> downloadBundles(java.util.List<java.lang.String> bundles) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
private void initalizeClassloader(RemoteResourcesClassLoader cl, java.util.List<java.io.File> artifacts) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected void processResourceBundles(RemoteResourcesClassLoader classLoader, org.apache.velocity.VelocityContext context) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected org.apache.maven.model.Model getSupplement(org.codehaus.plexus.util.xml.Xpp3Dom supplementModelXml) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected org.apache.maven.model.Model mergeModels(org.apache.maven.model.Model parent, org.apache.maven.model.Model child)
private static java.lang.String generateSupplementMapKey(java.lang.String groupId, java.lang.String artifactId)
private java.util.Map<java.lang.String,org.apache.maven.model.Model> loadSupplements(java.lang.String[] models) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
private java.lang.String getLocationTemp(java.lang.String name)
name
- the name of the file whose location is to be resolvedpublic void init(org.apache.velocity.runtime.RuntimeServices rs) throws java.lang.Exception
init
in interface org.apache.velocity.runtime.log.LogChute
java.lang.Exception
public void log(int level, java.lang.String message)
log
in interface org.apache.velocity.runtime.log.LogChute
public void log(int level, java.lang.String message, java.lang.Throwable t)
log
in interface org.apache.velocity.runtime.log.LogChute
public boolean isLevelEnabled(int level)
isLevelEnabled
in interface org.apache.velocity.runtime.log.LogChute