diff --git a/plugin/pom.xml b/plugin/pom.xml
deleted file mode 100644
index 78fc434..0000000
--- a/plugin/pom.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
- 4.0.0
-
-
- net.kemitix
- kemitix-checkstyle-ruleset-parent
- 3.4.0-SNAPSHOT
-
-
- kemitix-checkstyle-ruleset-maven-plugin
- maven-plugin
- Kemitix Checkstyle :: Ruleset :: Plugin
- Checkstyle configuration using the Kemitix Checkstyle Ruleset
-
-
- 3.5.0
- 3.5
- 3.5
- 2.3.0
- 1.0.0
-
-
-
-
- org.apache.maven
- maven-plugin-api
- ${maven.version}
-
-
- org.apache.maven
- maven-core
- ${maven.version}
-
-
- org.apache.maven.plugin-tools
- maven-plugin-annotations
- ${maven-plugin-annotations.version}
- provided
-
-
- org.twdata.maven
- mojo-executor
- ${mojo-executor.version}
-
-
- me.andrz
- map-builder
- ${map-builder.version}
-
-
- org.assertj
- assertj-core
- test
-
-
- org.mockito
- mockito-core
- test
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-plugin-plugin
- ${maven-plugin-plugin.version}
-
-
-
-
diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java
deleted file mode 100644
index 32572db..0000000
--- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfiguration.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * The MIT License (MIT)
- *
- * Copyright (c) 2017 Paul Campbell
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- * and associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies
- * or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
- * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import lombok.Builder;
-import lombok.Getter;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.plugin.BuildPluginManager;
-import org.apache.maven.project.MavenProject;
-
-/**
- * Configuration for performing a Checkstyle Check.
- *
- * @author Paul Campbell (pcampbell@kemitix.net)
- */
-@Getter
-@Builder
-class CheckConfiguration {
-
- private MavenProject mavenProject;
-
- private MavenSession mavenSession;
-
- private ArtifactRepository artifactRepository;
-
- private BuildPluginManager pluginManager;
-
- private String rulesetVersion;
-
- private String sourceDirectory;
-
- private String level;
-}
diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java
deleted file mode 100644
index 07f2d0c..0000000
--- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojo.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * The MIT License (MIT)
- *
- * Copyright (c) 2017 Paul Campbell
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- * and associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies
- * or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
- * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import lombok.Setter;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.model.Build;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.BuildPluginManager;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.Component;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-
-/**
- * Runs the Checkstyle Maven Plugin with the Kemitix Checkstyle Ruleset.
- *
- * @author Paul Campbell (pcampbell@kemitix.net)
- */
-@Mojo(name = "check", defaultPhase = LifecyclePhase.VALIDATE)
-public class CheckMojo extends AbstractMojo {
-
- private static final String KEMITIX_GROUPID = "net.kemitix";
-
- private static final String KEMITIX_ARTIFACTID = "kemitix-checkstyle-ruleset";
-
- @Setter
- private CheckstyleExecutor checkstyleExecutor =
- new DefaultCheckstyleExecutor(new DefaultPluginExecutor(), new MavenXpp3Reader());
-
- @Setter
- @Parameter(defaultValue = "${project}", readonly = true)
- private MavenProject mavenProject;
-
- @Setter
- @Parameter(defaultValue = "${session}", readonly = true)
- private MavenSession mavenSession;
-
- @Setter
- @Parameter(defaultValue = "${localRepository}", readonly = true, required = true)
- private ArtifactRepository artifactRepository;
-
- @Parameter(name = "level", defaultValue = "5-complexity", readonly = true)
- private String level = "5-complexity";
-
- @Setter
- @Component
- private BuildPluginManager pluginManager;
-
- @Override
- public final void execute() throws MojoExecutionException, MojoFailureException {
- checkstyleExecutor.setLog(getLog());
- CheckConfiguration config = getCheckConfiguration();
- checkstyleExecutor.performCheck(config);
- }
-
- private CheckConfiguration getCheckConfiguration() {
- final Plugin rulesetPlugin = getRulesetPlugin();
- final Build build = mavenProject.getBuild();
- return CheckConfiguration.builder()
- .mavenProject(mavenProject)
- .mavenSession(mavenSession)
- .artifactRepository(artifactRepository)
- .pluginManager(pluginManager)
- .rulesetVersion(rulesetPlugin.getVersion())
- .sourceDirectory(build.getSourceDirectory())
- .level(level)
- .build();
- }
-
- private Plugin getRulesetPlugin() {
- return mavenProject.getPlugin(KEMITIX_GROUPID + ":" + KEMITIX_ARTIFACTID + "-maven-plugin");
- }
-}
diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java
deleted file mode 100644
index d40db6a..0000000
--- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/CheckstyleExecutor.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * The MIT License (MIT)
- *
- * Copyright (c) 2017 Paul Campbell
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- * and associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies
- * or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
- * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.logging.Log;
-
-/**
- * Executes the Checkstyle plugin.
- *
- * @author Paul Campbell (pcampbell@kemitix.net)
- */
-interface CheckstyleExecutor {
-
- /**
- * Execute Checkstyle Check.
- *
- * @param configuration The Configuration
- *
- * @throws MojoExecutionException on execution error
- * @throws MojoFailureException on execution failure
- */
- void performCheck(CheckConfiguration configuration) throws MojoExecutionException, MojoFailureException;
-
- /**
- * Set the logger to use.
- *
- * @param log the logger.
- */
- void setLog(Log log);
-}
diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java
deleted file mode 100644
index f3f066c..0000000
--- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutor.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * The MIT License (MIT)
- *
- * Copyright (c) 2017 Paul Campbell
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- * and associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies
- * or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
- * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.Setter;
-import lombok.val;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.DefaultArtifact;
-import org.apache.maven.artifact.handler.ArtifactHandler;
-import org.apache.maven.artifact.handler.DefaultArtifactHandler;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.logging.Log;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.twdata.maven.mojoexecutor.MojoExecutor;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.List;
-import java.util.Properties;
-
-/**
- * Default implementation of {@link CheckstyleExecutor}.
- *
- * @author Paul Campbell (pcampbell@kemitix.net)
- */
-@SuppressWarnings("classfanoutcomplexity")
-@RequiredArgsConstructor
-public class DefaultCheckstyleExecutor implements CheckstyleExecutor {
-
- private static final String CHECKSTYLE_GROUPID = "com.puppycrawl.tools";
-
- private static final String CHECKSTYLE_ARTIFACTID = "checkstyle";
-
- private static final String SEVNTU_GROUPID = "com.github.sevntu-checkstyle";
-
- private static final String SEVNTU_ARTIFACTID = "sevntu-checkstyle-maven-plugin";
-
- private static final String KEMITIX_GROUPID = "net.kemitix";
-
- private static final String KEMITIX_ARTIFACTID = "kemitix-checkstyle-ruleset";
-
- private static final String APACHE_PLUGIN_GROUPID = "org.apache.maven.plugins";
-
- private static final String APACHE_PLUGIN_ARTIFACTID = "maven-checkstyle-plugin";
-
- private static final String CONFIG_LOCATION = "configLocation";
-
- private static final String SOURCE_DIR = "sourceDirectory";
-
- private static final ArtifactHandler POM_ARTIFACT_HANDLER = new DefaultArtifactHandler("pom");
-
- private static final String PLUGIN_ARTIFACT_ID = KEMITIX_ARTIFACTID + "-parent";
-
- private final PluginExecutor pluginExecutor;
-
- private final MavenXpp3Reader mavenXpp3Reader;
-
- @Setter
- @Getter
- private Log log;
-
- private String rulesetVersion;
-
- @Override
- public final void performCheck(final CheckConfiguration config)
- throws MojoExecutionException, MojoFailureException {
- rulesetVersion = config.getRulesetVersion();
- val properties = getProperties(config.getArtifactRepository());
-
- // configure
- val checkstylePlugin = getPlugin(properties);
- final String sourceDirectory = config.getSourceDirectory();
- final String level = config.getLevel();
- info("Ruleset: %s", level);
- final String configFile = String.format("net/kemitix/checkstyle-%s.xml", level);
- final Xpp3Dom configuration = pluginExecutor.configuration(pluginExecutor.element(CONFIG_LOCATION, configFile),
- pluginExecutor.element(SOURCE_DIR, sourceDirectory)
- );
- final MojoExecutor.ExecutionEnvironment environment = pluginExecutor.executionEnvironment(config);
-
- // run
- pluginExecutor.executeMojo(checkstylePlugin, "check", configuration, environment);
- info("Checkstyle complete");
- }
-
- private String getProperty(final Properties properties, final String key) {
- val property = properties.getProperty(key);
- debug("%s: %s", key, property);
- return property;
- }
-
- private Plugin getPlugin(final Properties properties) {
- // get versions from pom.xml properties
- val pluginVersion = getProperty(properties, "maven-checkstyle-plugin.version");
- val checkstyleVersion = getProperty(properties, "checkstyle.version");
- val sevntuVersion = getProperty(properties, "sevntu.version");
- info("Checkstyle %s (plugin: %s, sevntu: %s, ruleset: %s)", checkstyleVersion,
- pluginVersion, sevntuVersion, rulesetVersion
- );
-
- // create checkstyle dependencies
- val checkstyle = getCheckstyleDependency(checkstyleVersion);
- val sevntu = getSevntuDependency(sevntuVersion);
- val ruleset = getRulesetDependency();
- final List dependencies = pluginExecutor.dependencies(checkstyle, sevntu, ruleset);
-
- return pluginExecutor.plugin(APACHE_PLUGIN_GROUPID, APACHE_PLUGIN_ARTIFACTID, pluginVersion, dependencies);
- }
-
- private Dependency getRulesetDependency() {
- return pluginExecutor.dependency(KEMITIX_GROUPID, KEMITIX_ARTIFACTID, rulesetVersion);
- }
-
- private Dependency getSevntuDependency(final String sevntuVersion) {
- return pluginExecutor.dependency(SEVNTU_GROUPID, SEVNTU_ARTIFACTID, sevntuVersion);
- }
-
- private Dependency getCheckstyleDependency(final String checkstyleVersion) {
- return pluginExecutor.dependency(CHECKSTYLE_GROUPID, CHECKSTYLE_ARTIFACTID, checkstyleVersion);
- }
-
- private Properties getProperties(final ArtifactRepository artifactRepository) throws MojoFailureException {
- // load properties from the plugin pom.xml
- final Artifact pluginArtifact = getPluginArtifact(artifactRepository);
- try {
- final File pomFile = pluginArtifact.getFile();
- return parsePomFile(pomFile).getProperties();
- } catch (XmlPullParserException | IOException e) {
- throw new MojoFailureException("Can't load properties from plugin's pom.xml", e);
- }
- }
-
- private Model parsePomFile(final File pomFile) throws IOException, XmlPullParserException {
- final Reader pomReader = new FileReader(pomFile);
- return mavenXpp3Reader.read(pomReader);
- }
-
- private Artifact getPluginArtifact(final ArtifactRepository artifactRepository) {
- final Artifact templateArtifact = getRulesetArtifactTemplate();
- return artifactRepository.find(templateArtifact);
- }
-
- private DefaultArtifact getRulesetArtifactTemplate() {
- return new DefaultArtifact(KEMITIX_GROUPID, PLUGIN_ARTIFACT_ID, rulesetVersion, null, "", null,
- POM_ARTIFACT_HANDLER
- );
- }
-
- private void info(final String format, final Object... args) {
- getLog().info(String.format(format, args));
- }
-
- private void debug(final String format, final Object... args) {
- getLog().debug(String.format(format, args));
- }
-}
diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java
deleted file mode 100644
index b176c2d..0000000
--- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutor.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * The MIT License (MIT)
- *
- * Copyright (c) 2017 Paul Campbell
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- * and associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies
- * or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
- * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.twdata.maven.mojoexecutor.MojoExecutor;
-
-import java.util.List;
-
-/**
- * Wrapper for {@link org.twdata.maven.mojoexecutor.MojoExecutor}.
- *
- * @author Paul Campbell (pcampbell@kemitix.net).
- */
-public final class DefaultPluginExecutor implements PluginExecutor {
-
- @Override
- public MojoExecutor.Element element(final String key, final String value) {
- return MojoExecutor.element(key, value);
- }
-
- @Override
- public Xpp3Dom configuration(final MojoExecutor.Element... elements) {
- return MojoExecutor.configuration(elements);
- }
-
- @Override
- public MojoExecutor.ExecutionEnvironment executionEnvironment(final CheckConfiguration config) {
- return MojoExecutor.executionEnvironment(
- config.getMavenProject(), config.getMavenSession(), config.getPluginManager());
- }
-
- @Override
- public void executeMojo(
- final Plugin plugin, final String goal, final Xpp3Dom configuration,
- final MojoExecutor.ExecutionEnvironment env
- ) throws MojoExecutionException {
- MojoExecutor.executeMojo(plugin, goal, configuration, env);
- }
-
- @Override
- public Dependency dependency(final String groupid, final String artifactid, final String version) {
- return MojoExecutor.dependency(groupid, artifactid, version);
- }
-
- @Override
- public List dependencies(final Dependency... dependencies) {
- return MojoExecutor.dependencies(dependencies);
- }
-
- @Override
- public Plugin plugin(
- final String groupid, final String artifactid, final String version, final List dependencies
- ) {
- return MojoExecutor.plugin(groupid, artifactid, version, dependencies);
- }
-}
diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java
deleted file mode 100644
index 91caeaf..0000000
--- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/PluginExecutor.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * The MIT License (MIT)
- *
- * Copyright (c) 2017 Paul Campbell
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- * and associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies
- * or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
- * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.twdata.maven.mojoexecutor.MojoExecutor;
-
-import java.util.List;
-
-/**
- * Interface for wrapping calls to static methods on {@link org.twdata.maven.mojoexecutor.MojoExecutor}.
- *
- * @author Paul Campbell (pcampbell@kemitix.net).
- */
-public interface PluginExecutor {
-
- /**
- * Constructs the element with a textual body.
- *
- * @param name The element name
- * @param value The element text value
- *
- * @return The element object
- */
- MojoExecutor.Element element(String name, String value);
-
- /**
- * Builds the configuration for the goal using Elements.
- *
- * @param elements A list of elements for the configuration section
- *
- * @return The elements transformed into the Maven-native XML format
- */
- Xpp3Dom configuration(MojoExecutor.Element... elements);
-
- /**
- * Constructs the {@link MojoExecutor.ExecutionEnvironment} instance fluently.
- *
- * @param configuration The Configuration
- *
- * @return The execution environment
- */
- MojoExecutor.ExecutionEnvironment executionEnvironment(CheckConfiguration configuration);
-
- /**
- * Entry point for executing a mojo.
- *
- * @param plugin The plugin to execute
- * @param goal The goal to execute
- * @param configuration The execution configuration
- * @param env The execution environment
- *
- * @throws MojoExecutionException If there are any exceptions locating or executing the mojo
- */
- void executeMojo(
- Plugin plugin, String goal, Xpp3Dom configuration, MojoExecutor.ExecutionEnvironment env
- ) throws MojoExecutionException;
-
- /**
- * Defines a dependency.
- *
- * @param groupId The group id
- * @param artifactId The artifact id
- * @param version The plugin version
- *
- * @return the dependency instance
- */
- Dependency dependency(String groupId, String artifactId, String version);
-
- /**
- * Creates a list of dependencies.
- *
- * @param dependencies the dependencies
- *
- * @return A list of dependencies
- */
- List dependencies(Dependency... dependencies);
-
- /**
- * Defines a plugin.
- *
- * @param groupId The group id
- * @param artifactId The artifact id
- * @param version The plugin version
- * @param dependencies The plugin dependencies
- *
- * @return The plugin instance
- */
- Plugin plugin(
- String groupId, String artifactId, String version, List dependencies
- );
-}
diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java
deleted file mode 100644
index a2bf527..0000000
--- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * The MIT License (MIT)
- *
- * Copyright (c) 2017 Paul Campbell
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- * and associated documentation files (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies
- * or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
- * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
- * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package net.kemitix.checkstyle.ruleset.plugin;
diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java
deleted file mode 100644
index 15c63ac..0000000
--- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckConfigurationTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import org.junit.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * @author Paul Campbell (pcampbell@kemitix.net).
- */
-public class CheckConfigurationTest {
-
- @Test
- public void toStringCoverage() {
- //given
- final String rulesetVersion = "ruleset version";
- final String sourceDirectory = "source directory";
- //when
- final String result = CheckConfiguration.builder()
- .rulesetVersion(rulesetVersion)
- .sourceDirectory(sourceDirectory)
- .toString();
- //then
- assertThat(result).contains("rulesetVersion=ruleset version")
- .contains("sourceDirectory=source directory");
- }
-}
diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java
deleted file mode 100644
index 86e540f..0000000
--- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/CheckMojoTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.model.Build;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.BuildPluginManager;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.BDDMockito.then;
-
-/**
- * Tests for {@link CheckMojo}.
- *
- * @author Paul Campbell (pcampbell@kemitix.net)
- */
-public class CheckMojoTest {
-
- @Mock
- private CheckstyleExecutor checkstyleExecutor;
-
- @Mock
- private MavenProject mavenProject;
-
- @Mock
- private MavenSession mavenSession;
-
- @Mock
- private ArtifactRepository artifactRepository;
-
- @Mock
- private BuildPluginManager pluginManager;
-
- @Captor
- private ArgumentCaptor configuration;
-
- @Mock
- private Plugin rulesetPlugin;
-
- @Mock
- private Build build;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- }
-
- @Test
- public void canExecute() throws MojoFailureException, MojoExecutionException {
- //given
- final CheckMojo mojo = new CheckMojo();
- mojo.setCheckstyleExecutor(checkstyleExecutor);
- mojo.setMavenProject(mavenProject);
- mojo.setMavenSession(mavenSession);
- mojo.setArtifactRepository(artifactRepository);
- mojo.setPluginManager(pluginManager);
- given(mavenProject.getPlugin(any())).willReturn(rulesetPlugin);
- given(mavenProject.getBuild()).willReturn(build);
- //when
- mojo.execute();
- //then
- then(checkstyleExecutor).should()
- .performCheck(configuration.capture());
- assertThat(configuration.getValue()).returns(mavenProject, CheckConfiguration::getMavenProject)
- .returns(mavenSession, CheckConfiguration::getMavenSession)
- .returns(artifactRepository, CheckConfiguration::getArtifactRepository)
- .returns(pluginManager, CheckConfiguration::getPluginManager);
- }
-}
diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java
deleted file mode 100644
index b7de3cb..0000000
--- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultCheckstyleExecutorTest.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.plugin.BuildPluginManager;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.twdata.maven.mojoexecutor.MojoExecutor;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.BDDMockito.then;
-
-/**
- * Tests for {@link DefaultCheckstyleExecutor}.
- *
- * @author Paul Campbell (pcampbell@kemitix.net)
- */
-public class DefaultCheckstyleExecutorTest {
-
- @Rule
- public TemporaryFolder folder = new TemporaryFolder();
-
- @Mock
- private PluginExecutor pluginExecutor;
-
- @Mock
- private MavenProject mavenProject;
-
- @Mock
- private MavenSession mavenSession;
-
- @Mock
- private ArtifactRepository artifactRepository;
-
- @Mock
- private BuildPluginManager pluginManager;
-
- @Mock
- private Plugin rulesetPlugin;
-
- @Mock
- private Log log;
-
- private DefaultCheckstyleExecutor checkstyleExecutor;
-
- private String level;
-
- @Mock
- private Artifact artifact;
-
- @Mock
- private MavenXpp3Reader mavenXpp3Reader;
-
- @Mock
- private Model pomModel;
-
- @Mock
- private MojoExecutor.Element configElement;
-
- @Mock
- private MojoExecutor.Element sourceElement;
-
- @Mock
- private Xpp3Dom pluginConfig;
-
- @Mock
- private MojoExecutor.ExecutionEnvironment env;
-
- @Mock
- private Dependency checkstyle;
-
- @Mock
- private Dependency sevntu;
-
- @Mock
- private Dependency ruleset;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- level = "test level";
- checkstyleExecutor = new DefaultCheckstyleExecutor(pluginExecutor, mavenXpp3Reader);
- checkstyleExecutor.setLog(log);
- }
-
- @Test
- public void canPerformCheck()
- throws MojoFailureException, MojoExecutionException, IOException, XmlPullParserException {
- //given
- final CheckConfiguration configuration = CheckConfiguration.builder()
- .mavenProject(mavenProject)
- .mavenSession(mavenSession)
- .artifactRepository(artifactRepository)
- .pluginManager(pluginManager)
- .rulesetVersion("ruleset version")
- .level(level)
- .build();
-
- given(artifactRepository.find(any())).willReturn(artifact);
- final File artifactFile = folder.newFile("pom.xml");
- given(artifact.getFile()).willReturn(artifactFile);
- given(mavenXpp3Reader.read(any(FileReader.class))).willReturn(pomModel);
- final Properties properties = new Properties();
- given(pomModel.getProperties()).willReturn(properties);
- given(pluginExecutor.element(eq("configLocation"), any())).willReturn(configElement);
- given(pluginExecutor.element(eq("sourceDirectory"), any())).willReturn(sourceElement);
- given(pluginExecutor.configuration(configElement, sourceElement)).willReturn(pluginConfig);
- given(pluginExecutor.executionEnvironment(configuration)).willReturn(env);
- final List dependencies = new ArrayList<>();
- dependencies.add(checkstyle);
- dependencies.add(sevntu);
- dependencies.add(ruleset);
- final String pluginVersion = "plugin version";
- final String checkstyleVersion = "checkstyle version";
- final String sevntuVersion = "sevntu version";
- final String rulesetVersion = "ruleset version";
- given(pluginExecutor.dependencies(checkstyle, sevntu, ruleset)).willReturn(dependencies);
- given(pluginExecutor.dependency("com.puppycrawl.tools", "checkstyle", checkstyleVersion)).willReturn(
- checkstyle);
- given(pluginExecutor.dependency(
- "com.github.sevntu.checkstyle", "sevntu-checkstyle-maven-plugin", sevntuVersion)).willReturn(sevntu);
- given(pluginExecutor.dependency("net.kemitix", "kemtiix-checkstyle-ruleset", rulesetVersion)).willReturn(
- ruleset);
- properties.setProperty("maven-checkstyle-plugin.version", pluginVersion);
- properties.setProperty("checkstyle.version", checkstyleVersion);
- properties.setProperty("sevntu.version", sevntuVersion);
- given(pluginExecutor.plugin(
- eq("org.apache.maven.plugins"), eq("maven-checkstyle-plugin"), eq(pluginVersion), any())).willReturn(
- rulesetPlugin);
- //when
- checkstyleExecutor.performCheck(configuration);
- //then
-
- then(pluginExecutor).should()
- .executeMojo(rulesetPlugin, "check", pluginConfig, env);
- }
-}
diff --git a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java b/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java
deleted file mode 100644
index ba5f6b2..0000000
--- a/plugin/src/test/java/net/kemitix/checkstyle/ruleset/plugin/DefaultPluginExecutorTest.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package net.kemitix.checkstyle.ruleset.plugin;
-
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.BuildPluginManager;
-import org.apache.maven.plugin.InvalidPluginDescriptorException;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.PluginConfigurationException;
-import org.apache.maven.plugin.PluginDescriptorParsingException;
-import org.apache.maven.plugin.PluginManagerException;
-import org.apache.maven.plugin.PluginNotFoundException;
-import org.apache.maven.plugin.PluginResolutionException;
-import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugin.descriptor.PluginDescriptor;
-import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.configuration.PlexusConfiguration;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.twdata.maven.mojoexecutor.MojoExecutor;
-
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.BDDMockito.then;
-
-/**
- * Tests for {@link DefaultPluginExecutor}.
- *
- * @author Paul Campbell (pcampbell@kemitix.net)
- */
-public class DefaultPluginExecutorTest {
-
- private PluginExecutor pluginExecutor;
-
- @Mock
- private MavenProject mavenProject;
-
- @Mock
- private MavenSession mavenSession;
-
- @Mock
- private BuildPluginManager pluginManager;
-
- @Mock
- private Plugin plugin;
-
- @Mock
- private Xpp3Dom configuration;
-
- @Mock
- private PluginDescriptor pluginDescriptor;
-
- @Mock
- private MojoDescriptor mojoDescriptor;
-
- @Mock
- private PlexusConfiguration mojoConfiguration;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- pluginExecutor = new DefaultPluginExecutor();
- }
-
- @Test
- public void canElement() {
- //when
- final MojoExecutor.Element element = pluginExecutor.element("name", "value");
- //then
- assertThat(element.toDom()).returns("name", Xpp3Dom::getName)
- .returns("value", Xpp3Dom::getValue);
- }
-
- @Test
- public void canConfiguration() {
- //given
- final MojoExecutor.Element alpha = pluginExecutor.element("alpha", "first");
- final MojoExecutor.Element beta = pluginExecutor.element("beta", "second");
- //when
- final Xpp3Dom configuration = pluginExecutor.configuration(alpha, beta);
- //then
- assertThat(configuration.getChild("alpha")).returns("alpha", Xpp3Dom::getName)
- .returns("first", Xpp3Dom::getValue);
- assertThat(configuration.getChild("beta")).returns("beta", Xpp3Dom::getName)
- .returns("second", Xpp3Dom::getValue);
- }
-
- @Test
- public void canExecutionEnvironment() {
- //given
- final CheckConfiguration configuration = createCheckConfiguration();
- //when
- final MojoExecutor.ExecutionEnvironment environment = pluginExecutor.executionEnvironment(configuration);
- //then
- assertThat(environment).returns(mavenProject, MojoExecutor.ExecutionEnvironment::getMavenProject)
- .returns(mavenSession, MojoExecutor.ExecutionEnvironment::getMavenSession)
- .returns(pluginManager, MojoExecutor.ExecutionEnvironment::getPluginManager);
- }
-
- private CheckConfiguration createCheckConfiguration() {
- return CheckConfiguration.builder()
- .mavenProject(mavenProject)
- .mavenSession(mavenSession)
- .pluginManager(pluginManager)
- .build();
- }
-
- @Test
- public void canExecuteMojo()
- throws MojoExecutionException, InvalidPluginDescriptorException, PluginResolutionException,
- PluginDescriptorParsingException, PluginNotFoundException, PluginManagerException,
- PluginConfigurationException, MojoFailureException {
- //given
- final String goal = "check";
- final MojoExecutor.ExecutionEnvironment environment =
- pluginExecutor.executionEnvironment(createCheckConfiguration());
- given(mavenSession.getCurrentProject()).willReturn(mavenProject);
- given(pluginManager.loadPlugin(eq(plugin), any(), any())).willReturn(pluginDescriptor);
- given(pluginDescriptor.getMojo(goal)).willReturn(mojoDescriptor);
- given(mojoDescriptor.getMojoConfiguration()).willReturn(mojoConfiguration);
- given(mojoConfiguration.getAttributeNames()).willReturn(new String[]{});
- given(mojoConfiguration.getChildren()).willReturn(new PlexusConfiguration[]{});
- //when
- pluginExecutor.executeMojo(plugin, goal, configuration, environment);
- //then
- then(pluginManager).should()
- .executeMojo(eq(mavenSession), any());
- }
-
- @Test
- public void canDependency() {
- //given
- final String groupId = "groupId";
- final String artifactId = "artifactId";
- final String version = "version";
- //when
- final Dependency dependency = pluginExecutor.dependency(groupId, artifactId, version);
- //then
- assertThat(dependency).returns(groupId, Dependency::getGroupId)
- .returns(artifactId, Dependency::getArtifactId)
- .returns(version, Dependency::getVersion);
- }
-
- @Test
- public void canDependencies() {
- //given
- final Dependency dependency = pluginExecutor.dependency("groupId", "artifactId", "version");
- //when
- final List dependencies = pluginExecutor.dependencies(dependency);
- //then
- assertThat(dependencies).containsExactly(dependency);
- }
-
- @Test
- public void canPlugin() {
- //given
- final String groupId = "groupId";
- final String artifactId = "artifactId";
- final String version = "version";
- final List dependencies = pluginExecutor.dependencies(pluginExecutor.dependency("pg", "pa", "pv"));
- //when
- final Plugin plugin = pluginExecutor.plugin(groupId, artifactId, version, dependencies);
- //then
- assertThat(plugin).returns(groupId, Plugin::getGroupId)
- .returns(artifactId, Plugin::getArtifactId)
- .returns(version, Plugin::getVersion)
- .returns(dependencies, Plugin::getDependencies);
- }
-}
diff --git a/pom.xml b/pom.xml
index 0510099..a244e9f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,7 +36,6 @@
builder
ruleset
- plugin
regressions