
com.sap.cloud.sdk.s4hana.quality.pmd.ConfigurablePmdMojo Maven / Gradle / Ivy
/*
* Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved.
*/
package com.sap.cloud.sdk.s4hana.quality.pmd;
import static org.twdata.maven.mojoexecutor.MojoExecutor.artifactId;
import static org.twdata.maven.mojoexecutor.MojoExecutor.configuration;
import static org.twdata.maven.mojoexecutor.MojoExecutor.dependency;
import static org.twdata.maven.mojoexecutor.MojoExecutor.element;
import static org.twdata.maven.mojoexecutor.MojoExecutor.executeMojo;
import static org.twdata.maven.mojoexecutor.MojoExecutor.executionEnvironment;
import static org.twdata.maven.mojoexecutor.MojoExecutor.goal;
import static org.twdata.maven.mojoexecutor.MojoExecutor.groupId;
import static org.twdata.maven.mojoexecutor.MojoExecutor.name;
import static org.twdata.maven.mojoexecutor.MojoExecutor.plugin;
import static org.twdata.maven.mojoexecutor.MojoExecutor.version;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.BuildPluginManager;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.twdata.maven.mojoexecutor.MojoExecutor;
@Mojo( name = "pmd" )
public class ConfigurablePmdMojo extends AbstractMojo
{
@Parameter( defaultValue = "${project}", readonly = true )
protected MavenProject mavenProject;
@Parameter( defaultValue = "${session}", readonly = true )
protected MavenSession mavenSession;
@Component
protected BuildPluginManager pluginManager;
@Parameter( defaultValue = "${pmd.rulesets}" )
private String rulesets;
@Parameter( defaultValue = "${pmd.excludes}" )
private String excludes;
@Override
public void execute()
throws MojoExecutionException
{
final List configurationElements = new ArrayList<>();
addParametersToConfig(rulesets, "rulesets", "ruleset", configurationElements);
addParametersToConfig(excludes, "excludes", "exclude", configurationElements);
final List dependencies = new ArrayList<>();
dependencies.add(dependency("com.sap.cloud.s4hana.quality", "pmd-rules", "2.20.2"));
final Plugin pmdPlugin =
plugin(groupId("org.apache.maven.plugins"), artifactId("maven-pmd-plugin"), version("3.8"), dependencies);
executeMojo(
pmdPlugin,
goal("pmd"),
configuration(configurationElements.toArray(new MojoExecutor.Element[configurationElements.size()])),
executionEnvironment(mavenProject, mavenSession, pluginManager));
}
private void addParametersToConfig(
String parameters,
String elementsTagName,
String elementTagName,
List configurationElements )
{
if( parameters != null && !parameters.trim().isEmpty() ) {
final List paraList = Arrays.asList(parameters.split(","));
final List elements = new ArrayList<>();
for( final String p : paraList ) {
elements.add(element(name(elementTagName), p));
}
configurationElements
.add(element(name(elementsTagName), elements.toArray(new MojoExecutor.Element[elements.size()])));
getLog().info(String.format("Configure PMD with %s: %s", elementsTagName, parameters));
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy