diff --git a/CHANGELOG b/CHANGELOG
index 4b7a42a..4876cc4 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,12 @@
CHANGELOG
=========
+2.1.1
+-----
+
+* Load plugin dependency versions from the plugin's own pom
+* Cross-platform build
+
2.1.0
-----
diff --git a/builder/pom.xml b/builder/pom.xml
index 2e3fd39..fae7ef6 100644
--- a/builder/pom.xml
+++ b/builder/pom.xml
@@ -12,7 +12,7 @@
kemitix-checkstyle-ruleset-builder
- 2.1.0
+ 2.1.1
jar
Kemitix Checkstyle Ruleset Builder
diff --git a/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriter.java b/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriter.java
index c82f1f7..5ce2daa 100644
--- a/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriter.java
+++ b/builder/src/main/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriter.java
@@ -50,7 +50,7 @@ import java.util.stream.Stream;
@RequiredArgsConstructor
class CheckstyleWriter implements CommandLineRunner {
- private static final String NEWLINE = "\n";
+ private static final String NEWLINE = System.getProperty("line.separator");
private final OutputProperties outputProperties;
diff --git a/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriterTest.java b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriterTest.java
index 2412652..da7d873 100644
--- a/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriterTest.java
+++ b/builder/src/test/java/net/kemitix/checkstyle/ruleset/builder/CheckstyleWriterTest.java
@@ -30,6 +30,8 @@ public class CheckstyleWriterTest {
private static final String TEMPLATE = "C:%s\nTW:%s";
+ private static final String FILE_SEPARATOR = System.getProperty("file.separator");
+
private CheckstyleWriter checkstyleWriter;
private OutputProperties outputProperties;
@@ -181,9 +183,11 @@ public class CheckstyleWriterTest {
@Test
public void throwRteIfErrorWritingFile() throws Exception {
//given
- outputProperties.setDirectory(Paths.get("/../imaginary"));
+ final String imaginary = String.join(FILE_SEPARATOR, "", "..", "imaginary");
+ outputProperties.setDirectory(Paths.get(imaginary));
exception.expect(RuntimeException.class);
- exception.expectMessage("java.nio.file.NoSuchFileException: /../imaginary/checkstyle-LAYOUT.xml");
+ exception.expectMessage(
+ "java.nio.file.NoSuchFileException: " + imaginary + FILE_SEPARATOR + "checkstyle-LAYOUT.xml");
//when
checkstyleWriter.run();
}
diff --git a/plugin-sample/pom.xml b/plugin-sample/pom.xml
index e8b07bd..20eb3fe 100644
--- a/plugin-sample/pom.xml
+++ b/plugin-sample/pom.xml
@@ -8,7 +8,7 @@
net.kemitix
kemitix-checkstyle-ruleset-plugin-sample
- 2.1.0
+ 2.1.1
Kemitix Checkstyle Ruleset Plugin Sample
Sample usage of the Kemitix Checkstyle Ruleset Plugin
diff --git a/plugin/pom.xml b/plugin/pom.xml
index e88bef1..8208852 100644
--- a/plugin/pom.xml
+++ b/plugin/pom.xml
@@ -7,7 +7,7 @@
net.kemitix
kemitix-checkstyle-ruleset-parent
- 2.1.0
+ 2.1.1
kemitix-checkstyle-ruleset-maven-plugin
@@ -101,34 +101,6 @@
1.8
-
- org.codehaus.mojo
- properties-maven-plugin
- ${properties-maven-plugin.version}
-
-
-
- set-system-properties
-
-
-
-
- maven-checkstyle-plugin.version
- ${maven-checkstyle-plugin.version}
-
-
- checkstyle.version
- ${checkstyle.version}
-
-
- sevntu.version
- ${sevntu.version}
-
-
-
-
-
-
diff --git a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/AbstractCheckMojo.java b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/AbstractCheckMojo.java
index fbb72f1..ae39165 100644
--- a/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/AbstractCheckMojo.java
+++ b/plugin/src/main/java/net/kemitix/checkstyle/ruleset/plugin/AbstractCheckMojo.java
@@ -26,7 +26,12 @@ package net.kemitix.checkstyle.ruleset.plugin;
import lombok.Setter;
import lombok.val;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.handler.DefaultArtifactHandler;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.execution.MavenSession;
+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;
@@ -34,14 +39,19 @@ import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.twdata.maven.mojoexecutor.MojoExecutor;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Properties;
+
/**
* Runs the Checkstyle Maven Plugin with the Kemitix Checkstyle Ruleset.
*
* @author Paul Campbell (pcampbell@kemitix.net)
*/
-public abstract class AbstractCheckMojo extends AbstractMojo {
+abstract class AbstractCheckMojo extends AbstractMojo {
private static final String CHECKSTYLE_GROUPID = "com.puppycrawl.tools";
@@ -73,8 +83,11 @@ public abstract class AbstractCheckMojo extends AbstractMojo {
@Parameter(defaultValue = "${session}", readonly = true)
private MavenSession mavenSession;
+ @Parameter(defaultValue = "${localRepository}", readonly = true, required = true)
+ private ArtifactRepository artifactRepository = null;
+
@Component
- private BuildPluginManager pluginManager;
+ private BuildPluginManager pluginManager = null;
/**
* Execute Checkstyle Check.
@@ -84,28 +97,66 @@ public abstract class AbstractCheckMojo extends AbstractMojo {
* @throws MojoExecutionException on execution error
* @throws MojoFailureException on execution failure
*/
- protected final void performCheck(final String level) throws MojoExecutionException, MojoFailureException {
- // load versions from plugin's pom.xml
- val properties = System.getProperties();
- val mavenCheckstylePluginVersion = properties.getProperty("maven-checkstyle-plugin.version");
- val checkstyleVersion = properties.getProperty("checkstyle.version");
- val sevntuVersion = properties.getProperty("sevntu.version");
+ final void performCheck(final String level) throws MojoExecutionException, MojoFailureException {
+ val properties = getProperties();
+ debug("properties: %s", 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");
+
+ // configure
+ val checkstylePlugin = getPlugin(pluginVersion, checkstyleVersion, sevntuVersion);
+ val configuration = MojoExecutor.configuration(
+ MojoExecutor.element(CONFIG_LOCATION, String.format("net/kemitix/checkstyle-%s.xml", level)));
+ val environment = MojoExecutor.executionEnvironment(mavenProject, mavenSession, pluginManager);
+
+ // run
+ info("Running Checkstyle %s (sevntu: %s) with ruleset %s (%s)", checkstyleVersion, sevntuVersion, level,
+ rulesetVersion
+ );
+ MojoExecutor.executeMojo(checkstylePlugin, "check", configuration, environment);
+ info("Checkstyle complete");
+ }
+
+ private String getProperty(final Properties properties, final String key) {
+ val property = properties.getProperty(key);
+ debug(key + ": %s", property);
+ return property;
+ }
+
+ private Plugin getPlugin(final String pluginVersion, final String checkstyleVersion, final String sevntuVersion) {
+ // create checkstyle dependencies
val checkstyle = MojoExecutor.dependency(CHECKSTYLE_GROUPID, CHECKSTYLE_ARTIFACTID, checkstyleVersion);
val sevntu = MojoExecutor.dependency(SEVNTU_GROUPID, SEVNTU_ARTIFACTID, sevntuVersion);
val ruleset = MojoExecutor.dependency(KEMITIX_GROUPID, KEMITIX_ARTIFACTID, rulesetVersion);
- val checkstylePlugin =
- MojoExecutor.plugin(APACHE_PLUGIN_GROUPID, APACHE_PLUGIN_ARTIFACTID, mavenCheckstylePluginVersion,
- MojoExecutor.dependencies(checkstyle, sevntu, ruleset)
- );
- val configLocation =
- MojoExecutor.element(CONFIG_LOCATION, String.format("net/kemitix/checkstyle-%s.xml", level));
+ val dependencies = MojoExecutor.dependencies(checkstyle, sevntu, ruleset);
- getLog().info(String.format("Running Checkstyle %s (sevntu: %s) with ruleset %s (%s)", checkstyleVersion,
- sevntuVersion, level, rulesetVersion
- ));
- MojoExecutor.executeMojo(checkstylePlugin, "check", MojoExecutor.configuration(configLocation),
- MojoExecutor.executionEnvironment(mavenProject, mavenSession, pluginManager)
- );
+ return MojoExecutor.plugin(APACHE_PLUGIN_GROUPID, APACHE_PLUGIN_ARTIFACTID, pluginVersion, dependencies);
+ }
+
+ private Properties getProperties() throws MojoFailureException {
+ // load properties from the plugin pom.xml
+ val pluginArtifactId = KEMITIX_ARTIFACTID + "-maven-plugin";
+ val pluginArtifact = new DefaultArtifact(KEMITIX_GROUPID, pluginArtifactId, rulesetVersion, null, "", null,
+ new DefaultArtifactHandler("pom")
+ );
+ try {
+ val pomReader = new FileReader(artifactRepository.find(pluginArtifact)
+ .getFile());
+ return new MavenXpp3Reader().read(pomReader)
+ .getProperties();
+ } catch (XmlPullParserException | IOException e) {
+ throw new MojoFailureException("Can't load properties from plugin's pom.xml", e);
+ }
+ }
+
+ 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/pom.xml b/pom.xml
index aef2d05..ad63965 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
net.kemitix
kemitix-checkstyle-ruleset-parent
- 2.1.0
+ 2.1.1
pom
Kemitix Checkstyle Ruleset (Parent)
diff --git a/ruleset/pom.xml b/ruleset/pom.xml
index 869cdba..5e42e90 100644
--- a/ruleset/pom.xml
+++ b/ruleset/pom.xml
@@ -7,11 +7,11 @@
net.kemitix
kemitix-checkstyle-ruleset-parent
- 2.1.0
+ 2.1.1
kemitix-checkstyle-ruleset
- 2.1.0
+ 2.1.1
jar
Kemitix Checkstyle Ruleset