in maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/EnforceMojo.java [201:276]
public void execute() throws MojoExecutionException {
Log log = this.getLog();
if (skip) {
log.info("Skipping Rule Enforcement.");
return;
}
Optional<PlexusConfiguration> rulesFromCommandLine = createRulesFromCommandLineOptions();
List<EnforcerRuleDesc> rulesList;
// current behavior - rules from command line override all other configured rules.
List<EnforcerRuleDesc> allRules = enforcerRuleManager.createRules(rulesFromCommandLine.orElse(rules), log);
rulesList = filterOutSkippedRules(allRules);
List<EnforcerRuleDesc> additionalRules = processRuleConfigProviders(rulesList);
rulesList = filterOutRuleConfigProviders(rulesList);
rulesList.addAll(additionalRules);
if (rulesList.isEmpty()) {
if (failIfNoRules) {
throw new MojoExecutionException(
"No rules are configured. Use the skip flag if you want to disable execution.");
} else {
log.warn("No rules are configured.");
return;
}
}
// create my helper
PluginParameterExpressionEvaluator evaluator = new PluginParameterExpressionEvaluator(session, mojoExecution);
EnforcerRuleHelper helper = new DefaultEnforcementRuleHelper(session, evaluator, log, container);
// if we are only warning, then disable
// failFast
if (!fail) {
failFast = false;
}
List<String> errorMessages = new ArrayList<>();
// go through each rule
for (int ruleIndex = 0; ruleIndex < rulesList.size(); ruleIndex++) {
EnforcerRuleDesc ruleDesc = rulesList.get(ruleIndex);
EnforcerLevel level = ruleDesc.getLevel();
try {
executeRule(ruleIndex, ruleDesc, helper);
} catch (EnforcerRuleError e) {
String ruleMessage = createRuleMessage(ruleIndex, ruleDesc, EnforcerLevel.ERROR, e);
throw new MojoExecutionException(System.lineSeparator() + ruleMessage, e);
} catch (EnforcerRuleException e) {
String ruleMessage = createRuleMessage(ruleIndex, ruleDesc, level, e);
if (failFast && level == EnforcerLevel.ERROR) {
throw new MojoExecutionException(System.lineSeparator() + ruleMessage, e);
}
if (level == EnforcerLevel.ERROR) {
errorMessages.add(ruleMessage);
} else {
log.warn(ruleMessage);
}
}
}
if (!errorMessages.isEmpty()) {
if (fail) {
throw new MojoExecutionException(
System.lineSeparator() + String.join(System.lineSeparator(), errorMessages));
} else {
errorMessages.forEach(log::warn);
}
}
}