Class AbstractProcessRemoteResourcesMojo

java.lang.Object
org.apache.maven.plugin.AbstractMojo
org.apache.maven.plugin.resources.remote.AbstractProcessRemoteResourcesMojo
All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo
Direct Known Subclasses:
AggregateProcessRemoteResourcesMojo, ProcessRemoteResourcesMojo

public abstract class AbstractProcessRemoteResourcesMojo 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".

This is a support abstract class, with two non-aggregating and aggregating implementations.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected String
    The character encoding scheme to be applied when filtering resources.
    protected String
    Comma separated list of Artifact names to exclude.
    protected String
    Comma separated list of GroupId Names to exclude.
    protected String
    Scope to exclude.
    protected boolean
    If we should exclude transitive dependencies
    protected List<String>
    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 String
    Comma separated list of Artifact names to include.
    protected String
    Comma separated list of GroupIds to include.
    protected boolean
    Deprecated.
    as Maven Project is available in Velocity context we can simply use $project.properties.propertyName
    protected String
    Scope to include.
    protected org.apache.maven.execution.MavenSession
    The Maven session.
    protected org.apache.maven.project.MavenProject
    The current project.
    protected Map<String,String>
    Additional properties to be passed to Velocity.
    protected final org.eclipse.aether.RepositorySystem
     
    protected String[]
    When resolving project dependencies, specify the scopes to include.
    protected boolean
     
    protected int
    Deprecated.
    not used anymore

    Fields inherited from interface org.apache.maven.plugin.Mojo

    ROLE
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    AbstractProcessRemoteResourcesMojo(org.eclipse.aether.RepositorySystem repoSystem, org.apache.maven.shared.filtering.MavenFileFilter fileFilter, org.codehaus.plexus.resource.ResourceManager locator, org.apache.maven.project.ProjectBuilder projectBuilder, org.apache.maven.artifact.handler.manager.ArtifactHandlerManager artifactHandlerManager)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected org.apache.velocity.VelocityContext
     
    protected boolean
    copyResourceIfExists(File outputFile, String bundleResourceName, org.apache.velocity.VelocityContext context, String encoding)
     
    void
     
    protected abstract Set<org.apache.maven.artifact.Artifact>
    Returns all the transitive hull of all the involved maven projects.
    protected abstract Set<org.apache.maven.artifact.Artifact>
    Returns all the direct dependencies of all the involved maven projects.
    protected List<org.apache.maven.project.MavenProject>
     
    protected Map<org.apache.maven.model.Organization,List<org.apache.maven.project.MavenProject>>
    getProjectsSortedByOrganization(List<org.apache.maven.project.MavenProject> projects)
     
    protected org.apache.maven.model.Model
    getSupplement(org.codehaus.plexus.util.xml.Xpp3Dom supplementModelXml)
     
    protected org.apache.maven.model.Model
    mergeModels(org.apache.maven.model.Model parent, org.apache.maven.model.Model child)
     
    protected void
    processResourceBundles(ClassLoader classLoader, org.apache.velocity.VelocityContext context)
     
    protected void
     

    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 Details

    • filterDelimiters

      @Parameter protected List<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).
      Since:
      1.1
    • useDefaultFilterDelimiters

      @Parameter(defaultValue="true") protected boolean useDefaultFilterDelimiters
      Since:
      1.1
    • encoding

      @Parameter(property="encoding", defaultValue="${project.build.sourceEncoding}") protected String encoding
      The character encoding scheme to be applied when filtering resources.
    • properties

      @Parameter protected Map<String,String> properties
      Additional properties to be passed to Velocity. Several properties are automatically added:
      • project - the current MavenProject
      • projects - the list of dependency projects
      • projectsSortedByOrganization - the list of dependency projects sorted by organization
      • projectTimespan - the timespan of the current project (requires inceptionYear in pom)
      • locator - the ResourceManager that can be used to retrieve additional resources
      See the javadoc for MavenProject for information about the properties on the MavenProject.
    • includeProjectProperties

      @Deprecated @Parameter(defaultValue="false") protected boolean includeProjectProperties
      Deprecated.
      as Maven Project is available in Velocity context we can simply use $project.properties.propertyName
      Whether to include properties defined in the project when filtering resources.
      Since:
      1.2
    • velocityFilterInMemoryThreshold

      @Deprecated @Parameter(defaultValue="5242880") protected int velocityFilterInMemoryThreshold
      Deprecated.
      not used anymore
      When the result of velocity transformation fits in memory, it is compared with the actual contents on disk to eliminate unnecessary destination file overwrite. This improves build times since further build steps typically rely on the modification date.
      Since:
      1.6
    • mavenSession

      @Parameter(defaultValue="${session}", readonly=true, required=true) protected org.apache.maven.execution.MavenSession mavenSession
      The Maven session.
    • project

      @Parameter(defaultValue="${project}", readonly=true, required=true) protected org.apache.maven.project.MavenProject project
      The current project.
    • includeScope

      @Parameter(property="includeScope", defaultValue="runtime") protected String includeScope
      Scope to include. An Empty string indicates all scopes (default is "runtime").
      Since:
      1.0
    • excludeScope

      @Parameter(property="excludeScope", defaultValue="") protected String excludeScope
      Scope to exclude. An Empty string indicates no scopes (default).
      Since:
      1.0
    • resolveScopes

      @Parameter protected String[] resolveScopes
      When resolving project dependencies, specify the scopes to include. The default is the same as "includeScope" if there are no exclude scopes set. Otherwise, it defaults to "test" to grab all the dependencies so the exclude filters can filter out what is not needed.
      Since:
      1.5
    • excludeArtifactIds

      @Parameter(property="excludeArtifactIds", defaultValue="") protected String excludeArtifactIds
      Comma separated list of Artifact names to exclude.
      Since:
      1.0
    • includeArtifactIds

      @Parameter(property="includeArtifactIds", defaultValue="") protected String includeArtifactIds
      Comma separated list of Artifact names to include.
      Since:
      1.0
    • excludeGroupIds

      @Parameter(property="excludeGroupIds", defaultValue="") protected String excludeGroupIds
      Comma separated list of GroupId Names to exclude.
      Since:
      1.0
    • includeGroupIds

      @Parameter(property="includeGroupIds", defaultValue="") protected String includeGroupIds
      Comma separated list of GroupIds to include.
      Since:
      1.0
    • excludeTransitive

      @Parameter(property="excludeTransitive", defaultValue="false") protected boolean excludeTransitive
      If we should exclude transitive dependencies
      Since:
      1.0
    • repoSystem

      protected final org.eclipse.aether.RepositorySystem repoSystem
  • Constructor Details

    • AbstractProcessRemoteResourcesMojo

      protected AbstractProcessRemoteResourcesMojo(org.eclipse.aether.RepositorySystem repoSystem, org.apache.maven.shared.filtering.MavenFileFilter fileFilter, org.codehaus.plexus.resource.ResourceManager locator, org.apache.maven.project.ProjectBuilder projectBuilder, org.apache.maven.artifact.handler.manager.ArtifactHandlerManager artifactHandlerManager)
  • Method Details

    • execute

      public void execute() throws org.apache.maven.plugin.MojoExecutionException
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • getProjects

      protected List<org.apache.maven.project.MavenProject> getProjects()
    • getAllDependencies

      protected abstract Set<org.apache.maven.artifact.Artifact> getAllDependencies()
      Returns all the transitive hull of all the involved maven projects.
    • getDirectDependencies

      protected abstract Set<org.apache.maven.artifact.Artifact> getDirectDependencies()
      Returns all the direct dependencies of all the involved maven projects.
    • getProjectsSortedByOrganization

      protected Map<org.apache.maven.model.Organization,List<org.apache.maven.project.MavenProject>> getProjectsSortedByOrganization(List<org.apache.maven.project.MavenProject> projects)
    • copyResourceIfExists

      protected boolean copyResourceIfExists(File outputFile, String bundleResourceName, org.apache.velocity.VelocityContext context, String encoding) throws IOException, org.apache.maven.plugin.MojoExecutionException
      Throws:
      IOException
      org.apache.maven.plugin.MojoExecutionException
    • validate

      protected void validate() throws org.apache.maven.plugin.MojoExecutionException
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • buildVelocityContext

      protected org.apache.velocity.VelocityContext buildVelocityContext()
    • processResourceBundles

      protected void processResourceBundles(ClassLoader classLoader, org.apache.velocity.VelocityContext context) throws org.apache.maven.plugin.MojoExecutionException
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • getSupplement

      protected org.apache.maven.model.Model getSupplement(org.codehaus.plexus.util.xml.Xpp3Dom supplementModelXml) throws org.apache.maven.plugin.MojoExecutionException
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • mergeModels

      protected org.apache.maven.model.Model mergeModels(org.apache.maven.model.Model parent, org.apache.maven.model.Model child)