Class EnforceMojo

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo

    @Mojo(name="enforce",
          defaultPhase=VALIDATE,
          requiresDependencyCollection=TEST,
          threadSafe=true)
    public class EnforceMojo
    extends org.apache.maven.plugin.AbstractMojo
    This goal executes the defined enforcer-rules once per module.
    • Field Detail

      • cache

        protected static java.util.Hashtable<java.lang.String,​EnforcerRule> cache
        This is a static variable used to persist the cached results across plugin invocations.
      • mojoExecution

        @Parameter(defaultValue="${mojoExecution}",
                   readonly=true,
                   required=true)
        protected org.apache.maven.plugin.MojoExecution mojoExecution
        MojoExecution needed by the ExpressionEvaluator
      • session

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

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

        @Parameter(property="enforcer.skip",
                   defaultValue="false")
        protected boolean skip
        Flag to easily skip all checks
      • fail

        @Parameter(property="enforcer.fail",
                   defaultValue="true")
        private boolean fail
        Flag to fail the build if at least one check fails.
      • failFast

        @Parameter(property="enforcer.failFast",
                   defaultValue="false")
        private boolean failFast
        Fail on the first rule that doesn't pass
      • failIfNoRules

        @Parameter(property="enforcer.failIfNoRules",
                   defaultValue="true")
        private boolean failIfNoRules
        Flag to fail the build if no rules are present
        Since:
        3.2.0
      • rules

        @Parameter
        private org.codehaus.plexus.configuration.PlexusConfiguration rules
        Rules configuration to execute as XML. Each first level tag represents rule name to execute. Inner tags are configurations for rule. Eg:
             <rules>
                 <alwaysFail/>
                 <alwaysPass>
                     <message>message for rule</message>
                 </alwaysPass>
                 <myRule implementation="org.example.MyRule"/>
             </rules>
         
        Since:
        1.0.0
      • rulesToSkip

        @Parameter(required=false,
                   property="enforcer.skipRules")
        private java.util.List<java.lang.String> rulesToSkip
        List of strings that matches the EnforcerRules to skip.
        Since:
        3.2.0
      • ignoreCache

        @Parameter(property="enforcer.ignoreCache",
                   defaultValue="false")
        protected boolean ignoreCache
        Use this flag to disable rule result caching. This will cause all rules to execute on each project even if the rule indicates it can safely be cached.
      • container

        @Component
        private org.codehaus.plexus.PlexusContainer container
      • rulesToExecute

        private java.util.List<java.lang.String> rulesToExecute
    • Constructor Detail

      • EnforceMojo

        public EnforceMojo()
    • Method Detail

      • setRulesToExecute

        @Parameter(required=false,
                   property="enforcer.rules")
        public void setRulesToExecute​(java.util.List<java.lang.String> rulesToExecute)
                               throws org.apache.maven.plugin.MojoExecutionException
        List of strings that matches the EnforcerRules to execute. Replacement for the rules property.
        Parameters:
        rulesToExecute - a rules to execute
        Throws:
        org.apache.maven.plugin.MojoExecutionException - when values are incorrect
        Since:
        3.2.0
      • setCommandLineRules

        @Parameter(required=false,
                   property="rules")
        @Deprecated
        public void setCommandLineRules​(java.util.List<java.lang.String> rulesToExecute)
                                 throws org.apache.maven.plugin.MojoExecutionException
        Deprecated.
        Use enforcer.rules property instead
        List of strings that matches the EnforcerRules to execute.
        Parameters:
        rulesToExecute - a rules to execute
        Throws:
        org.apache.maven.plugin.MojoExecutionException - when values are incorrect
      • execute

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

        private org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration executeRuleConfigProvider​(EnforcerRuleDesc ruleDesc)
      • createRulesFromCommandLineOptions

        private java.util.Optional<org.codehaus.plexus.configuration.PlexusConfiguration> createRulesFromCommandLineOptions()
        Create rules configuration based on command line provided rules list.
        Returns:
        a configuration in case where rules list is present or empty
      • filterOutSkippedRules

        private java.util.List<EnforcerRuleDesc> filterOutSkippedRules​(java.util.List<EnforcerRuleDesc> allRules)
        Filter out (remove) rules that have been specifically skipped via additional configuration.
        Parameters:
        allRules - list of enforcer rules to go through and filter
        Returns:
        list of filtered rules
      • shouldExecute

        protected boolean shouldExecute​(EnforcerRule rule)
        This method determines if a rule should execute based on the cache
        Parameters:
        rule - the rule to verify
        Returns:
        true if rule should be executed, otherwise false
      • setRulesToSkip

        public void setRulesToSkip​(java.util.List<java.lang.String> rulesToSkip)
        Set rule list to skip.
        Parameters:
        rulesToSkip - a rule list
      • setFail

        public void setFail​(boolean fail)
        Parameters:
        fail - whether to fail
      • setFailFast

        public void setFailFast​(boolean failFast)
        Parameters:
        failFast - whether to fail fast
      • getRuleName

        private java.lang.String getRuleName​(EnforcerRuleDesc ruleDesc)
      • setFailIfNoRules

        public void setFailIfNoRules​(boolean failIfNoRules)
        Parameters:
        failIfNoRules - whether to fail if there are no rules