Class RequirePluginVersions

All Implemented Interfaces:
EnforcerRuleBase

@Named("requirePluginVersions") public final class RequirePluginVersions extends AbstractStandardEnforcerRule
This rule will enforce that all plugins specified in the poms have a version declared.
  • Field Details

    • 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
    • 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.
    • pluginManager

      private final org.apache.maven.plugin.PluginManager pluginManager
      The plugin manager.
    • factory

      private final org.apache.maven.artifact.factory.ArtifactFactory factory
      The factory.
    • repositorySystem

      private final org.eclipse.aether.RepositorySystem repositorySystem
    • session

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

      private final EnforcerRuleUtils utils
      The utils.
    • runtimeInformation

      private final org.apache.maven.rtinfo.RuntimeInformation runtimeInformation
    • defaultLifeCycles

      private final org.apache.maven.lifecycle.DefaultLifecycles defaultLifeCycles
    • project

      private final org.apache.maven.project.MavenProject project
    • evaluator

      private final ExpressionEvaluator evaluator
    • container

      private final org.codehaus.plexus.PlexusContainer container
  • Constructor Details

    • RequirePluginVersions

      @Inject public RequirePluginVersions(org.apache.maven.plugin.PluginManager pluginManager, org.apache.maven.artifact.factory.ArtifactFactory factory, org.eclipse.aether.RepositorySystem repositorySystem, org.apache.maven.execution.MavenSession session, EnforcerRuleUtils utils, org.apache.maven.rtinfo.RuntimeInformation runtimeInformation, org.apache.maven.lifecycle.DefaultLifecycles defaultLifeCycles, org.apache.maven.project.MavenProject project, ExpressionEvaluator evaluator, org.codehaus.plexus.PlexusContainer container)
  • Method Details

    • execute

      public void execute() throws EnforcerRuleException
      Description copied from class: AbstractEnforcerRule
      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 and rule level if it should stop or just log the message as a warning.
      Specified by:
      execute in class AbstractEnforcerRule
      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

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

      public Collection<String> combineUncheckedPlugins(Collection<String> uncheckedPlugins, String uncheckedPluginsList)
      Combines the old Collection with the new comma separated list.
      Parameters:
      uncheckedPlugins - a new collections
      uncheckedPluginsList - a list to merge
      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 EnforcerRuleError
      Add the additional plugins if they don't exist yet.
      Parameters:
      existing - the existing
      additional - the additional
      Returns:
      the sets the
      Throws:
      EnforcerRuleError - the enforcer error
    • parsePluginString

      private org.apache.maven.model.Plugin parsePluginString(String pluginString, String field) throws EnforcerRuleError
      Helper method to parse and inject a Plugin.
      Parameters:
      pluginString - a plugin description to parse
      field - a source of pluginString
      Returns:
      the prepared plugin
      Throws:
      EnforcerRuleError
    • 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

      private org.apache.maven.model.Plugin findCurrentPlugin(org.apache.maven.model.Plugin plugin, org.apache.maven.project.MavenProject project) throws EnforcerRuleException
      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.
      Throws:
      EnforcerRuleException
    • getBoundPlugins

      private 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
      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
    • hasValidVersionSpecified

      public boolean hasValidVersionSpecified(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:
      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

      private 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

      private List<PluginWrapper> getAllPluginEntries(org.apache.maven.project.MavenProject project)
      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
    • addPluginsInProfiles

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

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

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

      private void getProfilePlugins(List<PluginWrapper> plugins, 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)
    • setBanLatest

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

      public void setBanRelease(boolean theBanRelease)
      Sets the ban release.
      Parameters:
      theBanRelease - the banRelease 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
    • setBanTimestamps

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

      public String toString()
      Overrides:
      toString in class Object