Package org.apache.maven.enforcer.rules
Class RequirePluginVersions
- java.lang.Object
-
- org.apache.maven.enforcer.rule.api.AbstractEnforcerRuleBase
-
- org.apache.maven.enforcer.rule.api.AbstractEnforcerRule
-
- org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule
-
- org.apache.maven.enforcer.rules.RequirePluginVersions
-
- All Implemented Interfaces:
EnforcerRuleBase
@Named("requirePluginVersions") public final class RequirePluginVersions extends AbstractStandardEnforcerRuleThis rule will enforce that all plugins specified in the poms have a version declared.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<java.lang.String>additionalPluginsAdditional plugins to enforce have versions.private booleanbanLatestDon't allow the LATEST identifier.private booleanbanMavenDefaultsprivate booleanbanReleaseDon't allow the RELEASE identifier.private booleanbanSnapshotsDon't allow snapshot plugins.private booleanbanTimestampsDon't allow timestamp snapshot plugins.private org.codehaus.plexus.PlexusContainercontainerprivate org.apache.maven.lifecycle.DefaultLifecyclesdefaultLifeCyclesprivate ExpressionEvaluatorevaluatorprivate org.apache.maven.artifact.factory.ArtifactFactoryfactoryThe factory.private java.util.Collection<org.apache.maven.lifecycle.Lifecycle>lifecyclesThe lifecycles.private java.lang.StringphasesThe comma separated list of phases that should be used to find lifecycle plugin bindings.private java.util.Map<java.lang.String,org.apache.maven.lifecycle.Lifecycle>phaseToLifecycleMapThe phase to lifecycle map.private org.apache.maven.plugin.PluginManagerpluginManagerThe plugin manager.private org.apache.maven.project.MavenProjectprojectprivate org.eclipse.aether.RepositorySystemrepositorySystemprivate org.apache.maven.rtinfo.RuntimeInformationruntimeInformationprivate org.apache.maven.execution.MavenSessionsessionThe session.private java.lang.StringunCheckedPluginListSame as unCheckedPlugins but as a comma list to better support properties.private java.util.List<java.lang.String>unCheckedPluginsPlugins to skip for version enforcement.private EnforcerRuleUtilsutilsThe utils.
-
Constructor Summary
Constructors Constructor Description 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 Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Set<org.apache.maven.model.Plugin>addAdditionalPlugins(java.util.Set<org.apache.maven.model.Plugin> existing, java.util.List<java.lang.String> additional)Add the additional plugins if they don't exist yet.private voidaddPluginsInProfiles(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Model model)java.util.Collection<java.lang.String>combineUncheckedPlugins(java.util.Collection<java.lang.String> uncheckedPlugins, java.lang.String uncheckedPluginsList)Combines the old Collection with the new comma separated list.voidexecute()This is the interface into the rule.private org.apache.maven.model.PluginfindCurrentPlugin(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.private java.lang.ObjectfindExtension(org.apache.maven.project.MavenProject project, java.lang.String role, java.lang.String roleHint, org.apache.maven.settings.Settings settings, org.apache.maven.artifact.repository.ArtifactRepository localRepository)Find extension.private java.util.Map<java.lang.String,java.lang.String>findMappingsForLifecycle(org.apache.maven.project.MavenProject project, org.apache.maven.lifecycle.Lifecycle lifecycle)Find mappings for lifecycle.private java.util.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 parentsprivate java.util.Set<org.apache.maven.model.Plugin>getAllPlugins(org.apache.maven.project.MavenProject project, org.apache.maven.lifecycle.Lifecycle lifecycle)Gets the all plugins.private java.util.Set<org.apache.maven.model.Plugin>getBoundPlugins(org.apache.maven.project.MavenProject project, java.lang.String phases)Gets the plugins that are bound to the defined phases.private org.apache.maven.lifecycle.LifecyclegetLifecycleForPhase(java.lang.String phase)Gets the lifecycle for phase.java.util.Map<java.lang.String,org.apache.maven.lifecycle.Lifecycle>getPhaseToLifecycleMap()Gets the phase to lifecycle map.private voidgetPluginManagementPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Model model)private voidgetPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Model model)private voidgetProfilePluginManagementPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Profile profile)private voidgetProfilePlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Profile profile)java.util.Set<org.apache.maven.model.Plugin>getProfilePlugins(org.apache.maven.project.MavenProject project)Finds the plugins that are listed in active profiles.private voidgetProfileReportingPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Profile profile)private voidgetReportingPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Model model)private voidhandleBanMessages(java.lang.StringBuilder newMsg)private voidhandleMessagesToTheUser(org.apache.maven.project.MavenProject project, java.util.List<org.apache.maven.model.Plugin> failures)booleanhasValidVersionSpecified(org.apache.maven.model.Plugin source, java.util.List<PluginWrapper> pluginWrappers)Checks for valid version specified.booleanisBanSnapshots()Checks if is ban snapshots.private booleanisMatchingPlugin(org.apache.maven.model.Plugin source, PluginWrapper plugin)private booleanisSnapshot(java.lang.String baseVersion)Checks if is snapshot.private booleanisValidVersion(java.lang.String version)private org.apache.maven.model.PluginparsePluginString(java.lang.String pluginString, java.lang.String field)Helper method to parse and inject a Plugin.(package private) java.util.Set<org.apache.maven.model.Plugin>removeUncheckedPlugins(java.util.Collection<java.lang.String> uncheckedPlugins, java.util.Set<org.apache.maven.model.Plugin> plugins)Remove the plugins that the user doesn't want to check.voidsetBanLatest(boolean banLatest)Sets the ban latest.voidsetBanRelease(boolean banRelease)Sets the ban release.voidsetBanSnapshots(boolean banSnapshots)Sets the ban snapshots.voidsetBanTimestamps(boolean banTimestamps)Sets the ban timestamps.java.lang.StringtoString()private voidverifyPlugin(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)Verify plugin.-
Methods inherited from class org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule
formatLocation, getMessage, setMessage
-
Methods inherited from class org.apache.maven.enforcer.rule.api.AbstractEnforcerRule
getCacheId, getLevel, getRuleName
-
Methods inherited from class org.apache.maven.enforcer.rule.api.AbstractEnforcerRuleBase
getLog, setLog
-
-
-
-
Field Detail
-
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 java.lang.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 java.util.List<java.lang.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 java.util.List<java.lang.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 java.lang.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 java.util.Map<java.lang.String,org.apache.maven.lifecycle.Lifecycle> phaseToLifecycleMap
The phase to lifecycle map.
-
lifecycles
private java.util.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 Detail
-
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 Detail
-
execute
public void execute() throws EnforcerRuleExceptionDescription copied from class:AbstractEnforcerRuleThis 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:
executein classAbstractEnforcerRule- Throws:
EnforcerRuleException- the enforcer rule exceptionEnforcerRuleError- in order to brake a build immediately
-
handleMessagesToTheUser
private void handleMessagesToTheUser(org.apache.maven.project.MavenProject project, java.util.List<org.apache.maven.model.Plugin> failures) throws EnforcerRuleException- Throws:
EnforcerRuleException
-
handleBanMessages
private void handleBanMessages(java.lang.StringBuilder newMsg)
-
removeUncheckedPlugins
java.util.Set<org.apache.maven.model.Plugin> removeUncheckedPlugins(java.util.Collection<java.lang.String> uncheckedPlugins, java.util.Set<org.apache.maven.model.Plugin> plugins) throws EnforcerRuleErrorRemove the plugins that the user doesn't want to check.- Parameters:
uncheckedPlugins-plugins-- Returns:
- The plugins which have been removed.
- Throws:
EnforcerRuleError
-
combineUncheckedPlugins
public java.util.Collection<java.lang.String> combineUncheckedPlugins(java.util.Collection<java.lang.String> uncheckedPlugins, java.lang.String uncheckedPluginsList)Combines the old Collection with the new comma separated list.- Parameters:
uncheckedPlugins- a new collectionsuncheckedPluginsList- a list to merge- Returns:
- List of unchecked plugins.
-
addAdditionalPlugins
public java.util.Set<org.apache.maven.model.Plugin> addAdditionalPlugins(java.util.Set<org.apache.maven.model.Plugin> existing, java.util.List<java.lang.String> additional) throws EnforcerRuleErrorAdd the additional plugins if they don't exist yet.- Parameters:
existing- the existing pluginsadditional- the additional plugins- Returns:
- the additional and existing plugins
- Throws:
EnforcerRuleError- the enforcer error
-
parsePluginString
private org.apache.maven.model.Plugin parsePluginString(java.lang.String pluginString, java.lang.String field) throws EnforcerRuleErrorHelper method to parse and inject a Plugin.- Parameters:
pluginString- a plugin description to parsefield- a source of pluginString- Returns:
- the prepared plugin
- Throws:
EnforcerRuleError
-
getProfilePlugins
public java.util.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 EnforcerRuleExceptionGiven a plugin, this will retrieve the matching plugin artifact from the model.- Parameters:
plugin- plugin to lookupproject- project to search- Returns:
- matching plugin,
nullif not found. - Throws:
EnforcerRuleException
-
getBoundPlugins
private java.util.Set<org.apache.maven.model.Plugin> getBoundPlugins(org.apache.maven.project.MavenProject project, java.lang.String phases) throws org.apache.maven.plugin.PluginNotFoundException, org.apache.maven.lifecycle.LifecycleExecutionExceptionGets 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 projectphases- the phases- Returns:
- the bound plugins
- Throws:
org.apache.maven.plugin.PluginNotFoundException- the plugin not found exceptionorg.apache.maven.lifecycle.LifecycleExecutionException- the lifecycle execution exception
-
hasValidVersionSpecified
public boolean hasValidVersionSpecified(org.apache.maven.model.Plugin source, java.util.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 sourcepluginWrappers- the plugins- Returns:
- true, if successful
-
isValidVersion
private boolean isValidVersion(java.lang.String version)
-
isMatchingPlugin
private boolean isMatchingPlugin(org.apache.maven.model.Plugin source, PluginWrapper plugin)
-
isSnapshot
private boolean isSnapshot(java.lang.String baseVersion)
Checks if is snapshot.- Parameters:
baseVersion- the base version- Returns:
- true, if is snapshot
-
getAllPlugins
private java.util.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.LifecycleExecutionExceptionGets the all plugins.- Parameters:
project- the projectlifecycle- the lifecycle- Returns:
- the all plugins
- Throws:
org.apache.maven.plugin.PluginNotFoundException- the plugin not found exceptionorg.apache.maven.lifecycle.LifecycleExecutionException- the lifecycle execution exception
-
getPhaseToLifecycleMap
public java.util.Map<java.lang.String,org.apache.maven.lifecycle.Lifecycle> getPhaseToLifecycleMap() throws org.apache.maven.lifecycle.LifecycleExecutionExceptionGets 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(java.lang.String phase) throws org.apache.maven.BuildFailureException, org.apache.maven.lifecycle.LifecycleExecutionExceptionGets the lifecycle for phase.- Parameters:
phase- the phase- Returns:
- the lifecycle for phase
- Throws:
org.apache.maven.BuildFailureException- the build failure exceptionorg.apache.maven.lifecycle.LifecycleExecutionException- the lifecycle execution exception
-
findMappingsForLifecycle
private java.util.Map<java.lang.String,java.lang.String> findMappingsForLifecycle(org.apache.maven.project.MavenProject project, org.apache.maven.lifecycle.Lifecycle lifecycle) throws org.apache.maven.lifecycle.LifecycleExecutionException, org.apache.maven.plugin.PluginNotFoundExceptionFind mappings for lifecycle.- Parameters:
project- the projectlifecycle- the lifecycle- Returns:
- the map
- Throws:
org.apache.maven.lifecycle.LifecycleExecutionException- the lifecycle execution exceptionorg.apache.maven.plugin.PluginNotFoundException- the plugin not found exception
-
findExtension
private java.lang.Object findExtension(org.apache.maven.project.MavenProject project, java.lang.String role, java.lang.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.PluginNotFoundExceptionFind extension.- Parameters:
project- the projectrole- the roleroleHint- the role hintsettings- the settingslocalRepository- the local repository- Returns:
- the object
- Throws:
org.apache.maven.lifecycle.LifecycleExecutionException- the lifecycle execution exceptionorg.apache.maven.plugin.PluginNotFoundException- the plugin not found exception
-
verifyPlugin
private void 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.PluginNotFoundExceptionVerify plugin.- Parameters:
plugin- the pluginproject- the projectsettings- the settingslocalRepository- the local repository- Throws:
org.apache.maven.lifecycle.LifecycleExecutionException- the lifecycle execution exceptionorg.apache.maven.plugin.PluginNotFoundException- the plugin not found exception
-
getAllPluginEntries
private java.util.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(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Model model)
-
getProfilePluginManagementPlugins
private void getProfilePluginManagementPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Profile profile)
-
getProfileReportingPlugins
private void getProfileReportingPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Profile profile)
-
getProfilePlugins
private void getProfilePlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Profile profile)
-
getPlugins
private void getPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Model model)
-
getPluginManagementPlugins
private void getPluginManagementPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Model model)
-
getReportingPlugins
private void getReportingPlugins(java.util.List<PluginWrapper> plugins, org.apache.maven.model.Model model)
-
setBanLatest
public void setBanLatest(boolean banLatest)
Sets the ban latest.- Parameters:
banLatest- the banLatest to set
-
setBanRelease
public void setBanRelease(boolean banRelease)
Sets the ban release.- Parameters:
banRelease- the banRelease to set
-
isBanSnapshots
public boolean isBanSnapshots()
Checks if is ban snapshots.- Returns:
- the banSnapshots
-
setBanSnapshots
public void setBanSnapshots(boolean banSnapshots)
Sets the ban snapshots.- Parameters:
banSnapshots- the banSnapshots to set
-
setBanTimestamps
public void setBanTimestamps(boolean banTimestamps)
Sets the ban timestamps.- Parameters:
banTimestamps- the banTimestamps to set
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-