@Mojo(name="process",
defaultPhase=GENERATE_RESOURCES,
threadSafe=true)
public class ProcessRemoteResourcesMojo
extends org.apache.maven.plugin.AbstractMojo
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
Attaches the resource to 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.String> |
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.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.codehaus.plexus.velocity.VelocityComponent |
velocity
Velocity component.
|
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) |
private void |
initalizeClassloader(RemoteResourcesClassLoader cl,
java.util.List<java.io.File> artifacts) |
private boolean |
isExecutionRoot() |
private java.util.Map<java.lang.String,org.apache.maven.model.Model> |
loadSupplements(java.lang.String[] models) |
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
@Parameter(defaultValue="true") private boolean attached
@Parameter private java.util.Map<java.lang.String,java.lang.String> 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.codehaus.plexus.velocity.VelocityComponent velocity
@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(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
public void execute() throws org.apache.maven.plugin.MojoExecutionException
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 resolved