Class RequirePluginVersions

All Implemented Interfaces:
EnforcerRule, EnforcerRule2

public class RequirePluginVersions extends AbstractNonCacheableEnforcerRule
This rule will enforce that all plugins specified in the poms have a version declared.
  • Field Details

    • helper

      private EnforcerRuleHelper helper
    • banLatest

      private boolean banLatest
      Don't allow the LATEST identifier.
    • banRelease

      private boolean banRelease
      Don't allow the RELEASE identifier.
    • banSnapshots

      private boolean banSnapshots
      Don't allow snapshot plugins.
    • banTimestamps

      private boolean banTimestamps
      Don't allow timestamp snapshot plugins.
    • banMavenDefaults

      private boolean banMavenDefaults
      Since:
      3.0.0
    • phases

      private String phases
      The comma separated list of phases that should be used to find lifecycle plugin bindings. The default value is "clean,deploy,site".
    • additionalPlugins

      private List<String> additionalPlugins
      Additional plugins to enforce have versions. These are plugins that may not be in the poms but are used anyway, like help, eclipse etc.
      The plugins should be specified in the form: group:artifactId.
    • unCheckedPlugins

      private List<String> unCheckedPlugins
      Plugins to skip for version enforcement. The plugins should be specified in the form: group:artifactId. NOTE: This is deprecated, use unCheckedPluginList instead.
    • unCheckedPluginList

      private String unCheckedPluginList
      Same as unCheckedPlugins but as a comma list to better support properties. Sample form: group:artifactId,group2:artifactId2
      Since:
      1.0-beta-1
    • pluginManager

      private org.apache.maven.plugin.PluginManager pluginManager
      The plugin manager.
    • phaseToLifecycleMap

      private Map<String,org.apache.maven.lifecycle.Lifecycle> phaseToLifecycleMap
      The phase to lifecycle map.
    • lifecycles

      private Collection<org.apache.maven.lifecycle.Lifecycle> lifecycles
      The lifecycles.
    • factory

      private org.apache.maven.artifact.factory.ArtifactFactory factory
      The factory.
    • resolver

      private org.apache.maven.artifact.resolver.ArtifactResolver resolver
      The resolver.
    • local

      private org.apache.maven.artifact.repository.ArtifactRepository local
      The local.
    • log

      private org.apache.maven.plugin.logging.Log log
      The log.
    • session

      private org.apache.maven.execution.MavenSession session
      The session.
    • utils

      private EnforcerRuleUtils utils
      The utils.
    • runtimeInformation

      private org.apache.maven.rtinfo.RuntimeInformation runtimeInformation
  • Constructor Details

    • RequirePluginVersions

      public RequirePluginVersions()
  • Method Details

    • execute

      public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException
      Description copied from interface: EnforcerRule
      This is the interface into the rule. This method should throw an exception containing a reason message if the rule fails the check. The plugin will then decide based on the fail flag if it should stop or just log the message as a warning.
      Parameters:
      helper - The helper provides access to the log, MavenSession and has helpers to get common components. It is also able to lookup components by class name.
      Throws:
      EnforcerRuleException - the enforcer rule exception
    • handleMessagesToTheUser

      private void handleMessagesToTheUser(org.apache.maven.project.MavenProject project, List<org.apache.maven.model.Plugin> failures) throws EnforcerRuleException
      Throws:
      EnforcerRuleException
    • handleBanMessages

      private void handleBanMessages(StringBuilder newMsg)
    • removeUncheckedPlugins

      public Set<org.apache.maven.model.Plugin> removeUncheckedPlugins(Collection<String> uncheckedPlugins, Set<org.apache.maven.model.Plugin> plugins) throws org.apache.maven.plugin.MojoExecutionException
      Remove the plugins that the user doesn't want to check.
      Parameters:
      uncheckedPlugins -
      plugins -
      Returns:
      The plugins which have been removed.
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • combineUncheckedPlugins

      public Collection<String> combineUncheckedPlugins(Collection<String> uncheckedPlugins, String uncheckedPluginsList)
      Combines the old Collection with the new comma separated list.
      Parameters:
      uncheckedPlugins -
      uncheckedPluginsList -
      Returns:
      List of unchecked plugins.
    • addAdditionalPlugins

      public Set<org.apache.maven.model.Plugin> addAdditionalPlugins(Set<org.apache.maven.model.Plugin> existing, List<String> additional) throws org.apache.maven.plugin.MojoExecutionException
      Add the additional plugins if they don't exist yet.
      Parameters:
      existing - the existing
      additional - the additional
      Returns:
      the sets the
      Throws:
      org.apache.maven.plugin.MojoExecutionException - the mojo execution exception
    • parsePluginString

      protected org.apache.maven.model.Plugin parsePluginString(String pluginString, String field) throws org.apache.maven.plugin.MojoExecutionException
      Helper method to parse and inject a Plugin.
      Parameters:
      pluginString -
      field -
      Returns:
      the plugin
      Throws:
      org.apache.maven.plugin.MojoExecutionException
    • getProfilePlugins

      public Set<org.apache.maven.model.Plugin> getProfilePlugins(org.apache.maven.project.MavenProject project)
      Finds the plugins that are listed in active profiles.
      Parameters:
      project - the project
      Returns:
      the profile plugins
    • findCurrentPlugin

      protected org.apache.maven.model.Plugin findCurrentPlugin(org.apache.maven.model.Plugin plugin, org.apache.maven.project.MavenProject project)
      Given a plugin, this will retrieve the matching plugin artifact from the model.
      Parameters:
      plugin - plugin to lookup
      project - project to search
      Returns:
      matching plugin, null if not found.
    • resolvePlugin

      protected org.apache.maven.model.Plugin resolvePlugin(org.apache.maven.model.Plugin plugin, org.apache.maven.project.MavenProject project)
      Resolve plugin.
      Parameters:
      plugin - the plugin
      project - the project
      Returns:
      the plugin
    • getBoundPlugins

      protected Set<org.apache.maven.model.Plugin> getBoundPlugins(org.apache.maven.project.MavenProject project, String thePhases) throws org.apache.maven.plugin.PluginNotFoundException, org.apache.maven.lifecycle.LifecycleExecutionException, IllegalAccessException
      Gets the plugins that are bound to the defined phases. This does not find plugins bound in the pom to a phase later than the plugin is executing.
      Parameters:
      project - the project
      thePhases - the phases
      Returns:
      the bound plugins
      Throws:
      org.apache.maven.plugin.PluginNotFoundException - the plugin not found exception
      org.apache.maven.lifecycle.LifecycleExecutionException - the lifecycle execution exception
      IllegalAccessException - the illegal access exception
    • hasValidVersionSpecified

      protected boolean hasValidVersionSpecified(EnforcerRuleHelper helper, org.apache.maven.model.Plugin source, List<PluginWrapper> pluginWrappers)
      Checks for valid version specified. Checks to see if the version is specified for the plugin. Can optionally ban "RELEASE" or "LATEST" even if specified.
      Parameters:
      helper - the helper
      source - the source
      pluginWrappers - the plugins
      Returns:
      true, if successful
    • isValidVersion

      private boolean isValidVersion(String version)
    • isMatchingPlugin

      private boolean isMatchingPlugin(org.apache.maven.model.Plugin source, PluginWrapper plugin)
    • isSnapshot

      protected boolean isSnapshot(String baseVersion)
      Checks if is snapshot.
      Parameters:
      baseVersion - the base version
      Returns:
      true, if is snapshot
    • getAllPlugins

      private Set<org.apache.maven.model.Plugin> getAllPlugins(org.apache.maven.project.MavenProject project, org.apache.maven.lifecycle.Lifecycle lifecycle) throws org.apache.maven.plugin.PluginNotFoundException, org.apache.maven.lifecycle.LifecycleExecutionException
      Gets the all plugins.
      Parameters:
      project - the project
      lifecycle - the lifecycle
      Returns:
      the all plugins
      Throws:
      org.apache.maven.plugin.PluginNotFoundException - the plugin not found exception
      org.apache.maven.lifecycle.LifecycleExecutionException - the lifecycle execution exception
    • getPhaseToLifecycleMap

      public Map<String,org.apache.maven.lifecycle.Lifecycle> getPhaseToLifecycleMap() throws org.apache.maven.lifecycle.LifecycleExecutionException
      Gets the phase to lifecycle map.
      Returns:
      the phase to lifecycle map
      Throws:
      org.apache.maven.lifecycle.LifecycleExecutionException - the lifecycle execution exception
    • getLifecycleForPhase

      private org.apache.maven.lifecycle.Lifecycle getLifecycleForPhase(String phase) throws org.apache.maven.BuildFailureException, org.apache.maven.lifecycle.LifecycleExecutionException
      Gets the lifecycle for phase.
      Parameters:
      phase - the phase
      Returns:
      the lifecycle for phase
      Throws:
      org.apache.maven.BuildFailureException - the build failure exception
      org.apache.maven.lifecycle.LifecycleExecutionException - the lifecycle execution exception
    • findMappingsForLifecycle

      private Map<String,String> findMappingsForLifecycle(org.apache.maven.project.MavenProject project, org.apache.maven.lifecycle.Lifecycle lifecycle) throws org.apache.maven.lifecycle.LifecycleExecutionException, org.apache.maven.plugin.PluginNotFoundException
      Find mappings for lifecycle.
      Parameters:
      project - the project
      lifecycle - the lifecycle
      Returns:
      the map
      Throws:
      org.apache.maven.lifecycle.LifecycleExecutionException - the lifecycle execution exception
      org.apache.maven.plugin.PluginNotFoundException - the plugin not found exception
    • findExtension

      private Object findExtension(org.apache.maven.project.MavenProject project, String role, String roleHint, org.apache.maven.settings.Settings settings, org.apache.maven.artifact.repository.ArtifactRepository localRepository) throws org.apache.maven.lifecycle.LifecycleExecutionException, org.apache.maven.plugin.PluginNotFoundException
      Find extension.
      Parameters:
      project - the project
      role - the role
      roleHint - the role hint
      settings - the settings
      localRepository - the local repository
      Returns:
      the object
      Throws:
      org.apache.maven.lifecycle.LifecycleExecutionException - the lifecycle execution exception
      org.apache.maven.plugin.PluginNotFoundException - the plugin not found exception
    • verifyPlugin

      private org.apache.maven.plugin.descriptor.PluginDescriptor verifyPlugin(org.apache.maven.model.Plugin plugin, org.apache.maven.project.MavenProject project, org.apache.maven.settings.Settings settings, org.apache.maven.artifact.repository.ArtifactRepository localRepository) throws org.apache.maven.lifecycle.LifecycleExecutionException, org.apache.maven.plugin.PluginNotFoundException
      Verify plugin.
      Parameters:
      plugin - the plugin
      project - the project
      settings - the settings
      localRepository - the local repository
      Returns:
      the plugin descriptor
      Throws:
      org.apache.maven.lifecycle.LifecycleExecutionException - the lifecycle execution exception
      org.apache.maven.plugin.PluginNotFoundException - the plugin not found exception
    • getAllPluginEntries

      protected List<PluginWrapper> getAllPluginEntries(org.apache.maven.project.MavenProject project) throws org.apache.maven.artifact.resolver.ArtifactResolutionException, org.apache.maven.artifact.resolver.ArtifactNotFoundException, IOException, org.codehaus.plexus.util.xml.pull.XmlPullParserException
      Gets all plugin entries in build.plugins, build.pluginManagement.plugins, profile.build.plugins, reporting and profile.reporting in this project and all parents
      Parameters:
      project - the project
      Returns:
      the all plugin entries wrapped in a PluginWrapper Object
      Throws:
      org.apache.maven.artifact.resolver.ArtifactResolutionException - the artifact resolution exception
      org.apache.maven.artifact.resolver.ArtifactNotFoundException - the artifact not found exception
      IOException - Signals that an I/O exception has occurred.
      org.codehaus.plexus.util.xml.pull.XmlPullParserException - the xml pull parser exception
    • addPluginsInProfiles

      private void addPluginsInProfiles(List<PluginWrapper> plugins, org.apache.maven.model.Model model)
    • getProfilePluginManagementPlugins

      private void getProfilePluginManagementPlugins(List<PluginWrapper> plugins, org.apache.maven.model.Model model, org.apache.maven.model.Profile profile)
    • getProfileReportingPlugins

      private void getProfileReportingPlugins(List<PluginWrapper> plugins, org.apache.maven.model.Model model, org.apache.maven.model.Profile profile)
    • getProfilePlugins

      private void getProfilePlugins(List<PluginWrapper> plugins, org.apache.maven.model.Model model, org.apache.maven.model.Profile profile)
    • getPlugins

      private void getPlugins(List<PluginWrapper> plugins, org.apache.maven.model.Model model)
    • getPluginManagementPlugins

      private void getPluginManagementPlugins(List<PluginWrapper> plugins, org.apache.maven.model.Model model)
    • getReportingPlugins

      private void getReportingPlugins(List<PluginWrapper> plugins, org.apache.maven.model.Model model)
    • isBanLatest

      protected boolean isBanLatest()
      Checks if is ban latest.
      Returns:
      the banLatest
    • setBanLatest

      protected void setBanLatest(boolean theBanLatest)
      Sets the ban latest.
      Parameters:
      theBanLatest - the banLatest to set
    • isBanRelease

      protected boolean isBanRelease()
      Checks if is ban release.
      Returns:
      the banRelease
    • setBanRelease

      protected void setBanRelease(boolean theBanRelease)
      Sets the ban release.
      Parameters:
      theBanRelease - the banRelease to set
    • getUtils

      protected EnforcerRuleUtils getUtils()
      Gets the utils.
      Returns:
      the utils
    • setUtils

      protected void setUtils(EnforcerRuleUtils theUtils)
      Sets the utils.
      Parameters:
      theUtils - the utils to set
    • isBanSnapshots

      public boolean isBanSnapshots()
      Checks if is ban snapshots.
      Returns:
      the banSnapshots
    • setBanSnapshots

      public void setBanSnapshots(boolean theBanSnapshots)
      Sets the ban snapshots.
      Parameters:
      theBanSnapshots - the banSnapshots to set
    • isBanTimestamps

      public boolean isBanTimestamps()
      Checks if is ban timestamps.
      Returns:
      the banTimestamps
    • setBanTimestamps

      public void setBanTimestamps(boolean theBanTimestamps)
      Sets the ban timestamps.
      Parameters:
      theBanTimestamps - the banTimestamps to set
    • getUnCheckedPlugins

      public List<String> getUnCheckedPlugins()
    • setUnCheckedPlugins

      public void setUnCheckedPlugins(List<String> unCheckedPlugins)
    • setPhases

      public final void setPhases(String phases)
    • getPhases

      public final String getPhases()
    • setAdditionalPlugins

      public final void setAdditionalPlugins(List<String> additionalPlugins)
    • getAdditionalPlugins

      public final List<String> getAdditionalPlugins()