
com.lewisd.maven.lint.rules.basic.ExecutionIdRule Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lint-maven-plugin Show documentation
Show all versions of lint-maven-plugin Show documentation
Generates a report of suspicious/inconsistent POM elements, and optionally fails the build if violations are found.
The newest version!
package com.lewisd.maven.lint.rules.basic;
import com.lewisd.maven.lint.ResultCollector;
import com.lewisd.maven.lint.rules.AbstractReduntantVersionRule;
import com.lewisd.maven.lint.util.ExpressionEvaluator;
import com.lewisd.maven.lint.util.ModelUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.model.InputLocation;
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginExecution;
import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
import org.apache.maven.project.MavenProject;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public class ExecutionIdRule extends AbstractReduntantVersionRule {
@Autowired
public ExecutionIdRule(ExpressionEvaluator expressionEvaluator,
ModelUtil modelUtil,
PluginParameterExpressionEvaluator pluginParameterExpressionEvaluator) {
super(expressionEvaluator, modelUtil, pluginParameterExpressionEvaluator);
}
@Override
public String getIdentifier() {
return "ExecutionId";
}
@Override
public String getDescription() {
return "Executions should always specify an id, so they can be overridden in child modules, and uniquely identified in build logs.";
}
@Override
public void invoke(final MavenProject mavenProject, final Map models, final ResultCollector resultCollector) {
final Model originalModel = mavenProject.getOriginalModel();
final List plugins = new ArrayList();
expressionEvaluator.getPath(originalModel, "/build/plugins/plugin");
plugins.addAll(expressionEvaluator.getPath(originalModel, "/build/plugins"));
plugins.addAll(expressionEvaluator.getPath(originalModel, "/build/pluginManagement/plugins"));
plugins.addAll(expressionEvaluator.getPath(originalModel, "/profiles/build/plugins"));
plugins.addAll(expressionEvaluator.getPath(originalModel, "/profiles/build/pluginManagement/plugins"));
for (final Plugin plugin : plugins) {
final Collection executions = expressionEvaluator.getPath(plugin, "/executions");
for (final PluginExecution execution : executions) {
// "default" is what maven seems to use if no id is specified
if (StringUtils.isEmpty(execution.getId()) || "default".equals(execution.getId())) {
final InputLocation location = modelUtil.getLocation(execution, "");
resultCollector.addViolation(mavenProject, this, "Executions must specify an id", location);
}
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy