This is an automated email from the ASF dual-hosted git repository. sjaranowski pushed a commit to branch MENFORCER-458-version in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git
commit 866c79a8b200429b05a05faf64001b64e1bb1b16 Author: Slawomir Jaranowski <s.jaranow...@gmail.com> AuthorDate: Thu Jan 12 22:08:00 2023 +0100 [MENFORCER-458] Move Require Java, Maven Version to new API --- .../enforcer/rules/utils/ArtifactMatcher.java | 24 +++- .../rules/version}/AbstractVersionEnforcer.java | 57 +++----- .../rules/version}/RequireJavaVersion.java | 27 ++-- .../rules/version/RequireMavenVersion.java | 55 ++++++++ .../plugins/enforcer/RequireMavenVersion.java | 49 ------- .../src/site/apt/requireJavaVersion.apt.vm | 12 +- .../src/site/apt/requireMavenVersion.apt.vm | 4 +- .../enforcer/rules/utils/TestArtifactMatcher.java | 55 +++++++- .../rules/version/TestAbstractVersionEnforcer.java | 92 +++++++++++++ .../rules/version}/TestMavenVersion.java | 73 +++++----- .../rules/version}/TestRequireJavaVersion.java | 36 +++-- .../enforcer/TestAbstractVersionEnforcer.java | 148 --------------------- .../it/projects/require-java-version/verify.groovy | 23 ++++ .../projects/require-maven-version/verify.groovy | 23 ++++ .../maven/plugins/enforcer/DisplayInfoMojo.java | 1 + 15 files changed, 363 insertions(+), 316 deletions(-) diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java index 8e20d1b..83fb00c 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java @@ -24,11 +24,11 @@ import java.util.Objects; import java.util.function.Function; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.model.Dependency; -import org.apache.maven.plugins.enforcer.AbstractVersionEnforcer; import org.codehaus.plexus.util.StringUtils; import static java.util.Optional.ofNullable; @@ -126,7 +126,7 @@ public final class ArtifactMatcher { case 3: if (!matches(parts[2], version)) { - if (!AbstractVersionEnforcer.containsVersion( + if (!containsVersion( VersionRange.createFromVersionSpec(parts[2]), new DefaultArtifactVersion(version))) { return false; } @@ -216,4 +216,24 @@ public final class ArtifactMatcher { public boolean match(Dependency dependency) { return match(p -> p.match(dependency)); } + + /** + * Copied from Artifact.VersionRange. This is tweaked to handle singular ranges properly. Currently the default + * containsVersion method assumes a singular version means allow everything. This method assumes that "2.0.4" == + * "[2.0.4,)" + * + * @param allowedRange range of allowed versions. + * @param theVersion the version to be checked. + * @return true if the version is contained by the range. + */ + public static boolean containsVersion(VersionRange allowedRange, ArtifactVersion theVersion) { + ArtifactVersion recommendedVersion = allowedRange.getRecommendedVersion(); + if (recommendedVersion == null) { + return allowedRange.containsVersion(theVersion); + } else { + // only singular versions ever have a recommendedVersion + int compareTo = recommendedVersion.compareTo(theVersion); + return (compareTo <= 0); + } + } } diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/AbstractVersionEnforcer.java similarity index 70% rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/AbstractVersionEnforcer.java index 4e1bf62..bbae8ea 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/AbstractVersionEnforcer.java @@ -16,22 +16,23 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; +package org.apache.maven.enforcer.rules.version; import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; -import org.apache.maven.enforcer.rule.api.EnforcerRule; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.plugin.logging.Log; +import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule; import org.codehaus.plexus.util.StringUtils; +import static org.apache.maven.enforcer.rules.utils.ArtifactMatcher.containsVersion; + /** * Contains the common code to compare a version against a version range. * * @author <a href="mailto:bri...@apache.org">Brian Fox</a> */ -public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRule { +abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRule { /** * Specify the required version. Some examples are: @@ -51,14 +52,13 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu /** * Compares the specified version to see if it is allowed by the defined version range. * - * @param log the log - * @param variableName name of variable to use in messages (Example: "Maven" or "Java" etc). + * @param variableName name of variable to use in messages (Example: "Maven" or "Java" etc). * @param requiredVersionRange range of allowed versions. - * @param actualVersion the version to be checked. + * @param actualVersion the version to be checked. * @throws EnforcerRuleException the enforcer rule exception */ // CHECKSTYLE_OFF: LineLength - public void enforceVersion(Log log, String variableName, String requiredVersionRange, ArtifactVersion actualVersion) + public void enforceVersion(String variableName, String requiredVersionRange, ArtifactVersion actualVersion) throws EnforcerRuleException // CHECKSTYLE_ON: LineLength { @@ -71,13 +71,13 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu // short circuit check if the strings are exactly equal if (actualVersion.toString().equals(requiredVersionRange)) { - log.debug(msg + " is allowed in the range " + requiredVersionRange + "."); + getLog().debug(msg + " is allowed in the range " + requiredVersionRange + "."); } else { try { vr = VersionRange.createFromVersionSpec(requiredVersionRange); if (containsVersion(vr, actualVersion)) { - log.debug(msg + " is allowed in the range " + toString(vr) + "."); + getLog().debug(msg + " is allowed in the range " + toString(vr) + "."); } else { String message = getMessage(); @@ -103,25 +103,6 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu return vr.toString(); } } - /** - * Copied from Artifact.VersionRange. This is tweaked to handle singular ranges properly. Currently the default - * containsVersion method assumes a singular version means allow everything. This method assumes that "2.0.4" == - * "[2.0.4,)" - * - * @param allowedRange range of allowed versions. - * @param theVersion the version to be checked. - * @return true if the version is contained by the range. - */ - public static boolean containsVersion(VersionRange allowedRange, ArtifactVersion theVersion) { - ArtifactVersion recommendedVersion = allowedRange.getRecommendedVersion(); - if (recommendedVersion == null) { - return allowedRange.containsVersion(theVersion); - } else { - // only singular versions ever have a recommendedVersion - int compareTo = recommendedVersion.compareTo(theVersion); - return (compareTo <= 0); - } - } @Override public String getCacheId() { @@ -133,19 +114,6 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu } } - @Override - public boolean isCacheable() { - // the maven version is not going to change between projects in the same build. - return true; - } - - @Override - public boolean isResultValid(EnforcerRule theCachedRule) { - // i will always return the hash of the parameters as my id. If my parameters are the same, this - // rule must always have the same result. - return true; - } - /** * Gets the required version. * @@ -170,4 +138,9 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu public void setVersion(String theVersion) { this.version = theVersion; } + + @Override + public String toString() { + return String.format("%s[version=%s]", getClass().getSimpleName(), version); + } } diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java similarity index 83% rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java index 39b1733..ad44406 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java @@ -16,7 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; +package org.apache.maven.enforcer.rules.version; + +import javax.inject.Named; import java.util.Arrays; import java.util.Iterator; @@ -30,8 +32,6 @@ import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; -import org.apache.maven.plugin.logging.Log; import org.codehaus.plexus.util.StringUtils; /** @@ -39,7 +39,8 @@ import org.codehaus.plexus.util.StringUtils; * * @author <a href="mailto:bri...@apache.org">Brian Fox</a> */ -public class RequireJavaVersion extends AbstractVersionEnforcer { +@Named("requireJavaVersion") +public final class RequireJavaVersion extends AbstractVersionEnforcer { private static final Pattern JDK8_VERSION_PATTERN = Pattern.compile("([\\[(,]?)(1\\.8|8)([]),]?)"); @@ -63,24 +64,23 @@ public class RequireJavaVersion extends AbstractVersionEnforcer { } @Override - public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException { + public void execute() throws EnforcerRuleException { String javaVersion = SystemUtils.JAVA_VERSION; - Log log = helper.getLog(); - log.debug("Detected Java String: '" + javaVersion + "'"); + getLog().debug("Detected Java String: '" + javaVersion + "'"); javaVersion = normalizeJDKVersion(javaVersion); - log.debug("Normalized Java String: '" + javaVersion + "'"); + getLog().debug("Normalized Java String: '" + javaVersion + "'"); ArtifactVersion detectedJdkVersion = new DefaultArtifactVersion(javaVersion); - log.debug("Parsed Version: Major: " + detectedJdkVersion.getMajorVersion() + " Minor: " + getLog().debug("Parsed Version: Major: " + detectedJdkVersion.getMajorVersion() + " Minor: " + detectedJdkVersion.getMinorVersion() + " Incremental: " + detectedJdkVersion.getIncrementalVersion() + " Build: " + detectedJdkVersion.getBuildNumber() + " Qualifier: " + detectedJdkVersion.getQualifier()); - setCustomMessageIfNoneConfigured(detectedJdkVersion, getVersion(), log); + setCustomMessageIfNoneConfigured(detectedJdkVersion, getVersion()); - enforceVersion(helper.getLog(), "JDK", getVersion(), detectedJdkVersion); + enforceVersion("JDK", getVersion(), detectedJdkVersion); } /** @@ -117,15 +117,14 @@ public class RequireJavaVersion extends AbstractVersionEnforcer { return StringUtils.stripEnd(version, "."); } - private void setCustomMessageIfNoneConfigured( - ArtifactVersion detectedJdkVersion, String allowedVersionRange, Log log) { + private void setCustomMessageIfNoneConfigured(ArtifactVersion detectedJdkVersion, String allowedVersionRange) { if (getMessage() == null) { String version; try { VersionRange vr = VersionRange.createFromVersionSpec(allowedVersionRange); version = AbstractVersionEnforcer.toString(vr); } catch (InvalidVersionSpecificationException e) { - log.debug("Could not parse allowed version range " + allowedVersionRange, e); + getLog().debug("Could not parse allowed version range " + allowedVersionRange + " " + e.getMessage()); version = allowedVersionRange; } String message = String.format( diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireMavenVersion.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireMavenVersion.java new file mode 100644 index 0000000..4dfb9e8 --- /dev/null +++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireMavenVersion.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.maven.enforcer.rules.version; + +import javax.inject.Inject; +import javax.inject.Named; + +import java.util.Objects; + +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.apache.maven.enforcer.rule.api.EnforcerRuleException; +import org.apache.maven.rtinfo.RuntimeInformation; + +/** + * This rule checks that the Maven version is allowed. + * + * @author <a href="mailto:bri...@apache.org">Brian Fox</a> + */ +@Named("requireMavenVersion") +public final class RequireMavenVersion extends AbstractVersionEnforcer { + + private final RuntimeInformation runtimeInformation; + + @Inject + public RequireMavenVersion(RuntimeInformation runtimeInformation) { + this.runtimeInformation = Objects.requireNonNull(runtimeInformation); + } + + @Override + public void execute() throws EnforcerRuleException { + String mavenVersion = runtimeInformation.getMavenVersion(); + getLog().debug("Detected Maven Version: " + mavenVersion); + if (mavenVersion == null) { + throw new EnforcerRuleException("Unable to detect Maven Version"); + } + DefaultArtifactVersion detectedVersion = new DefaultArtifactVersion(mavenVersion); + enforceVersion("Maven", getVersion(), detectedVersion); + } +} diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java deleted file mode 100644 index b42875a..0000000 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.maven.plugins.enforcer; - -import org.apache.maven.artifact.versioning.DefaultArtifactVersion; -import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; -import org.apache.maven.execution.MavenSession; -import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; - -/** - * This rule checks that the Maven version is allowed. - * - * @author <a href="mailto:bri...@apache.org">Brian Fox</a> - */ -public class RequireMavenVersion extends AbstractVersionEnforcer { - @Override - public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException { - try { - MavenSession mavenSession = (MavenSession) helper.evaluate("${session}"); - String mavenVersion = mavenSession.getSystemProperties().getProperty("maven.version"); - helper.getLog().debug("Detected Maven Version: " + mavenVersion); - if (mavenVersion == null) { - throw new EnforcerRuleException( - "Unable to detect Maven Version - missing system property - maven.version"); - } - DefaultArtifactVersion detectedVersion = new DefaultArtifactVersion(mavenVersion); - enforceVersion(helper.getLog(), "Maven", getVersion(), detectedVersion); - } catch (ExpressionEvaluationException e) { - throw new EnforcerRuleException("Unable to retrieve the session.", e); - } - } -} diff --git a/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm b/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm index 9b32b51..39cd978 100644 --- a/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm +++ b/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm @@ -29,9 +29,9 @@ Require Java Version The following parameters are supported by this rule: - * message - an optional message to the user if the rule fails. + * <<message>> - an optional message to the user if the rule fails. - * {{{../apidocs/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.html#version}version}} - {{{./versionRanges.html}range}} of allowed JDKs. + * <<version>> - {{{./versionRanges.html}range}} of allowed JDKs. For JDK 1.8 you can also use simple <<<8>>> as <version> - it will be internally changed to <<<1.8>>> @@ -55,10 +55,10 @@ Require Java Version +---+ mvn enforcer:display-info ... -[enforcer:display-info] -Maven Version: 2.0.8 -JDK Version: 1.5.0_11 normalized as: 1.5.0-11 -OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1 +[INFO] Maven Version: 3.8.7 +[INFO] JDK Version: 1.8.0_352 normalized as: 1.8.0-352 +[INFO] Java Vendor: Homebrew +[INFO] OS Info - Arch: x86_64, Family: mac, Name: mac os x, Version: 12.6.1 +---+ Sample Plugin Configuration: diff --git a/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm b/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm index 268f2bd..bb17a2f 100644 --- a/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm +++ b/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm @@ -29,9 +29,9 @@ Require Maven Version The following parameters are supported by this rule: - * message - an optional message to the user if the rule fails. + * <<message>> - an optional message to the user if the rule fails. - * {{{../enforcer-rules/apidocs/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.html#version}version}} - {{{./versionRanges.html}range}} of allowed Maven versions. + * <<version>> - {{{./versionRanges.html}range}} of allowed Maven versions. [] diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestArtifactMatcher.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestArtifactMatcher.java index 4f67e43..8486e8a 100644 --- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestArtifactMatcher.java +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestArtifactMatcher.java @@ -25,22 +25,27 @@ 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.versioning.ArtifactVersion; +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.enforcer.rules.utils.ArtifactMatcher.Pattern; +import org.apache.maven.enforcer.rules.version.RequireJavaVersion; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; -public class TestArtifactMatcher { +class TestArtifactMatcher { Collection<String> patterns = new ArrayList<>(); Collection<String> ignorePatterns = new ArrayList<>(); @Test - public void testPatternInvalidInput() { + void testPatternInvalidInput() { try { new Pattern(null); fail("NullPointerException expected."); @@ -68,7 +73,7 @@ public class TestArtifactMatcher { } @Test - public void testPattern() throws InvalidVersionSpecificationException { + void testPattern() throws InvalidVersionSpecificationException { executePatternMatch( "groupId:artifactId:1.0:jar:compile", "groupId", "artifactId", "1.0", "compile", "jar", true); @@ -100,7 +105,7 @@ public class TestArtifactMatcher { } @Test - public void testMatch() throws InvalidVersionSpecificationException { + void testMatch() { patterns.add("groupId:artifactId:1.0"); patterns.add("*:anotherArtifact"); @@ -171,4 +176,46 @@ public class TestArtifactMatcher { VersionRange version = VersionRange.createFromVersion(versionRange); return new DefaultArtifact(groupId, artifactId, version, scope, type, classifier, artifactHandler); } + + /** + * Test contains version. + * + * @throws InvalidVersionSpecificationException the invalid version specification exception + */ + @Test + void testContainsVersion() throws InvalidVersionSpecificationException { + ArtifactVersion version = new DefaultArtifactVersion("2.0.5"); + // test ranges + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.5,)"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,)"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.5]"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.6]"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.6)"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0,)"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.0,)"), version)); + // not matching versions + assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.5)"), version)); + assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.6,)"), version)); + assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("(2.0.5,)"), version)); + + // test singular versions -> 2.0.5 == [2.0.5,) or x >= 2.0.5 + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("2.0"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("2.0.4"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("2.0.5"), version)); + + assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("2.0.6"), version)); + + version = new DefaultArtifactVersion("1.5.0-7"); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[1.5.0,)"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[1.5,1.6)"), version)); + + version = new DefaultArtifactVersion(RequireJavaVersion.normalizeJDKVersion("1.5.0-07")); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[1.5.0,)"), version)); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[1.5,1.6)"), version)); + + // MENFORCER-50 + version = new DefaultArtifactVersion("2.1.0-M1-RC12"); + assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.1.0-M1-RC12,)"), version)); + assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.1.0-M1,)"), version)); + } } diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestAbstractVersionEnforcer.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestAbstractVersionEnforcer.java new file mode 100644 index 0000000..0bfa859 --- /dev/null +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestAbstractVersionEnforcer.java @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.maven.enforcer.rules.version; + +import org.apache.maven.artifact.versioning.ArtifactVersion; +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.apache.maven.enforcer.rule.api.EnforcerLogger; +import org.apache.maven.enforcer.rule.api.EnforcerRuleException; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.Mockito.mock; + +/** + * The Class TestAbstractVersionEnforcer. + * + * @author <a href="mailto:bri...@apache.org">Brian Fox</a> + */ +class TestAbstractVersionEnforcer { + + /** + * Enforce false. + * + * @param rule the rule + * @param var the var + * @param range the range + * @param version the version + */ + private void enforceFalse(AbstractVersionEnforcer rule, String var, String range, ArtifactVersion version) { + try { + rule.enforceVersion(var, range, version); + fail("Expected to receive EnforcerRuleException because:" + version + " is not contained by " + range); + } catch (Exception e) { + if (e instanceof EnforcerRuleException) { + // log.info( "Caught Expected Exception: " + + // e.getLocalizedMessage() ); + } else { + fail("Received wrong exception. Expected EnforcerRuleExeption. Received:" + e); + } + } + } + + /** + * Test enforce version. + */ + @Test + void testEnforceVersion() throws Exception { + RequireJavaVersion rule = new RequireJavaVersion(); + rule.setLog(mock(EnforcerLogger.class)); + + ArtifactVersion version = new DefaultArtifactVersion("2.0.5"); + + // test ranges + rule.enforceVersion("test", "[2.0.5,)", version); + rule.enforceVersion("test", "[2.0.4,)", version); + rule.enforceVersion("test", "[2.0.4,2.0.5]", version); + rule.enforceVersion("test", "[2.0.4,2.0.6]", version); + rule.enforceVersion("test", "[2.0.4,2.0.6)", version); + rule.enforceVersion("test", "[2.0,)", version); + rule.enforceVersion("test", "[2.0.0,)", version); + + // test singular versions -> 2.0.5 == [2.0.5,) or x >= 2.0.5 + rule.enforceVersion("test", "2.0", version); + rule.enforceVersion("test", "2.0.4", version); + rule.enforceVersion("test", "2.0.5", version); + + enforceFalse(rule, "test", "[2.0.6,)", version); + enforceFalse(rule, "test", "(2.0.5,)", version); + enforceFalse(rule, "test", "2.0.6", version); + + enforceFalse(rule, "test", "[2.0.4,2.0.5)", version); + + // make sure to handle the invalid range specification + enforceFalse(rule, "test", "[[2.0.4,2.0.5)", version); + } +} diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestMavenVersion.java similarity index 59% rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestMavenVersion.java index 6d97aac..820dde9 100644 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestMavenVersion.java @@ -16,24 +16,43 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; - -import java.util.Properties; +package org.apache.maven.enforcer.rules.version; +import org.apache.maven.enforcer.rule.api.EnforcerLogger; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; -import org.apache.maven.execution.MavenSession; -import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; +import org.apache.maven.rtinfo.RuntimeInformation; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.Mockito.when; /** * The Class TestMavenVersion. * * @author <a href="mailto:bri...@apache.org">Brian Fox</a> */ -public class TestMavenVersion { +@ExtendWith(MockitoExtension.class) +class TestMavenVersion { + + @Mock + private RuntimeInformation runtimeInformation; + + @Mock + private EnforcerLogger log; + + @InjectMocks + private RequireMavenVersion rule; + + @BeforeEach + void setup() { + rule.setLog(log); + } /** * Test rule. @@ -41,21 +60,20 @@ public class TestMavenVersion { * @throws EnforcerRuleException the enforcer rule exception */ @Test - public void testRule() throws EnforcerRuleException { + void testRule() throws EnforcerRuleException { - RequireMavenVersion rule = new RequireMavenVersion(); - rule.setVersion("2.0.5"); + when(runtimeInformation.getMavenVersion()).thenReturn("3.0"); - EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(); + rule.setVersion("2.0.5"); // test the singular version - rule.execute(helper); + rule.execute(); // exclude this version rule.setVersion("(2.0.5"); try { - rule.execute(helper); + rule.execute(); fail("Expected an exception."); } catch (EnforcerRuleException e) { // expected to catch this. @@ -63,7 +81,7 @@ public class TestMavenVersion { // this shouldn't crash rule.setVersion("2.0.5_01"); - rule.execute(helper); + rule.execute(); } /** @@ -72,27 +90,22 @@ public class TestMavenVersion { * @throws EnforcerRuleException the enforcer rule exception */ @Test - public void checkRequireVersionMatrix() throws EnforcerRuleException, ExpressionEvaluationException { - RequireMavenVersion rule = new RequireMavenVersion(); - - EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(); - MavenSession mavenSession = (MavenSession) helper.evaluate("${session}"); - Properties systemProperties = mavenSession.getSystemProperties(); + void checkRequireVersionMatrix() throws EnforcerRuleException { - systemProperties.setProperty("maven.version", "3.6.1"); + when(runtimeInformation.getMavenVersion()).thenReturn("3.6.1"); rule.setVersion("3.6.0"); - rule.execute(helper); + rule.execute(); - systemProperties.setProperty("maven.version", "3.6.2"); + when(runtimeInformation.getMavenVersion()).thenReturn("3.6.2"); rule.setVersion("3.6.0"); - rule.execute(helper); + rule.execute(); rule.setVersion("3.6.1"); - rule.execute(helper); + rule.execute(); rule.setVersion("3.6.2"); - rule.execute(helper); + rule.execute(); rule.setVersion("3.6.3"); try { - rule.execute(helper); + rule.execute(); fail("Expected an exception."); } catch (EnforcerRuleException e) { // expected to catch this. @@ -103,8 +116,8 @@ public class TestMavenVersion { * Test id. */ @Test - public void testId() { - RequireMavenVersion rule = new RequireMavenVersion(); - rule.getCacheId(); + void testId() { + rule.setVersion("3.3.3"); + assertThat(rule.getCacheId()).isNotEmpty(); } } diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java similarity index 84% rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java index 4afecbb..38bb343 100644 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java +++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java @@ -16,13 +16,14 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.plugins.enforcer; +package org.apache.maven.enforcer.rules.version; import java.util.stream.Stream; import org.apache.commons.lang3.SystemUtils; +import org.apache.maven.enforcer.rule.api.EnforcerLogger; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -30,6 +31,7 @@ import org.junit.jupiter.params.provider.MethodSource; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.mock; /** * The Class TestRequireJavaVersion. @@ -38,6 +40,13 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; */ class TestRequireJavaVersion { + private RequireJavaVersion rule; + + @BeforeEach + void setup() { + rule = new RequireJavaVersion(); + rule.setLog(mock(EnforcerLogger.class)); + } /** * Test fix jdk version. */ @@ -76,13 +85,10 @@ class TestRequireJavaVersion { void settingsTheJavaVersionAsNormalizedVersionShouldNotFail() throws EnforcerRuleException { String normalizedJDKVersion = RequireJavaVersion.normalizeJDKVersion(SystemUtils.JAVA_VERSION); - RequireJavaVersion rule = new RequireJavaVersion(); rule.setVersion(normalizedJDKVersion); - EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(); - // test the singular version - rule.execute(helper); + rule.execute(); // intentionally no assertThat(...) because we don't expect and exception. } @@ -90,11 +96,9 @@ class TestRequireJavaVersion { void excludingTheCurrentJavaVersionViaRangeThisShouldFailWithException() { String thisVersion = RequireJavaVersion.normalizeJDKVersion(SystemUtils.JAVA_VERSION); String requiredVersion = "(" + thisVersion; - RequireJavaVersion rule = new RequireJavaVersion(); rule.setVersion(requiredVersion); - EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(); - assertThatThrownBy(() -> rule.execute(helper)) + assertThatThrownBy(() -> rule.execute()) .isInstanceOf(EnforcerRuleException.class) .hasMessage("The requested JDK version %s is invalid.", requiredVersion); } @@ -103,11 +107,9 @@ class TestRequireJavaVersion { void shouldIncludeJavaHomeLocationInTheErrorMessage() { String thisVersion = RequireJavaVersion.normalizeJDKVersion(SystemUtils.JAVA_VERSION); String requiredVersion = "10000"; - RequireJavaVersion rule = new RequireJavaVersion(); rule.setVersion(requiredVersion); - EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(); - assertThatThrownBy(() -> rule.execute(helper)) + assertThatThrownBy(() -> rule.execute()) .isInstanceOf(EnforcerRuleException.class) .hasMessage( "Detected JDK version %s (JAVA_HOME=%s) is not in the allowed range %s.", @@ -118,12 +120,10 @@ class TestRequireJavaVersion { void shouldUseCustomErrorMessage() { String requiredVersion = "10000"; String message = "My custom error message"; - RequireJavaVersion rule = new RequireJavaVersion(); rule.setVersion(requiredVersion); rule.setMessage(message); - EnforcerRuleHelper helper = EnforcerTestUtils.getHelper(); - assertThatThrownBy(() -> rule.execute(helper)) + assertThatThrownBy(() -> rule.execute()) .isInstanceOf(EnforcerRuleException.class) .hasMessage(message); } @@ -133,7 +133,6 @@ class TestRequireJavaVersion { */ @Test void testId() { - RequireJavaVersion rule = new RequireJavaVersion(); assertThat(rule.getCacheId()).isEqualTo("0"); } @@ -154,8 +153,7 @@ class TestRequireJavaVersion { @ParameterizedTest @MethodSource void fixJava8ShortVersion(String input, String expected) { - RequireJavaVersion requireJavaVersion = new RequireJavaVersion(); - requireJavaVersion.setVersion(input); - assertThat(requireJavaVersion.getVersion()).isEqualTo(expected); + rule.setVersion(input); + assertThat(rule.getVersion()).isEqualTo(expected); } } diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java deleted file mode 100644 index f6aba62..0000000 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.maven.plugins.enforcer; - -import org.apache.maven.artifact.versioning.ArtifactVersion; -import org.apache.maven.artifact.versioning.DefaultArtifactVersion; -import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; -import org.apache.maven.artifact.versioning.VersionRange; -import org.apache.maven.enforcer.rule.api.EnforcerRuleException; -import org.apache.maven.plugin.logging.Log; -import org.apache.maven.plugin.logging.SystemStreamLog; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * The Class TestAbstractVersionEnforcer. - * - * @author <a href="mailto:bri...@apache.org">Brian Fox</a> - */ -public class TestAbstractVersionEnforcer { - - /** - * Test contains version. - * - * @throws InvalidVersionSpecificationException the invalid version specification exception - */ - @Test - public void testContainsVersion() throws InvalidVersionSpecificationException { - ArtifactVersion version = new DefaultArtifactVersion("2.0.5"); - // test ranges - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.5,)"), version)); - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,)"), version)); - assertTrue( - AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.5]"), version)); - assertTrue( - AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.6]"), version)); - assertTrue( - AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.6)"), version)); - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0,)"), version)); - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.0,)"), version)); - // not matching versions - assertFalse( - AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.5)"), version)); - assertFalse(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.6,)"), version)); - assertFalse(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("(2.0.5,)"), version)); - - // test singular versions -> 2.0.5 == [2.0.5,) or x >= 2.0.5 - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("2.0"), version)); - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("2.0.4"), version)); - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("2.0.5"), version)); - - assertFalse(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("2.0.6"), version)); - - version = new DefaultArtifactVersion("1.5.0-7"); - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[1.5.0,)"), version)); - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[1.5,1.6)"), version)); - - version = new DefaultArtifactVersion(RequireJavaVersion.normalizeJDKVersion("1.5.0-07")); - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[1.5.0,)"), version)); - assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[1.5,1.6)"), version)); - - // MENFORCER-50 - version = new DefaultArtifactVersion("2.1.0-M1-RC12"); - assertTrue(AbstractVersionEnforcer.containsVersion( - VersionRange.createFromVersionSpec("[2.1.0-M1-RC12,)"), version)); - assertFalse( - AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.1.0-M1,)"), version)); - } - - /** - * Enforce false. - * - * @param rule the rule - * @param log the log - * @param var the var - * @param range the range - * @param version the version - */ - private void enforceFalse( - AbstractVersionEnforcer rule, Log log, String var, String range, ArtifactVersion version) { - try { - rule.enforceVersion(log, var, range, version); - fail("Expected to receive EnforcerRuleException because:" + version + " is not contained by " + range); - } catch (Exception e) { - if (e instanceof EnforcerRuleException) { - // log.info( "Caught Expected Exception: " + - // e.getLocalizedMessage() ); - } else { - fail("Received wrong exception. Expected EnforcerRuleExeption. Received:" + e); - } - } - } - - /** - * Test enforce version. - */ - @Test - public void testEnforceVersion() { - RequireMavenVersion rule = new RequireMavenVersion(); - ArtifactVersion version = new DefaultArtifactVersion("2.0.5"); - SystemStreamLog log = new SystemStreamLog(); - // test ranges - - // not matching versions - try { - rule.enforceVersion(log, "test", "[2.0.5,)", version); - rule.enforceVersion(log, "test", "[2.0.4,)", version); - rule.enforceVersion(log, "test", "[2.0.4,2.0.5]", version); - rule.enforceVersion(log, "test", "[2.0.4,2.0.6]", version); - rule.enforceVersion(log, "test", "[2.0.4,2.0.6)", version); - rule.enforceVersion(log, "test", "[2.0,)", version); - rule.enforceVersion(log, "test", "[2.0.0,)", version); - - // test singular versions -> 2.0.5 == [2.0.5,) or x >= 2.0.5 - rule.enforceVersion(log, "test", "2.0", version); - rule.enforceVersion(log, "test", "2.0.4", version); - rule.enforceVersion(log, "test", "2.0.5", version); - } catch (Exception e) { - fail("No Exception expected. Caught:" + e.getLocalizedMessage()); - } - - enforceFalse(rule, log, "test", "[2.0.6,)", version); - enforceFalse(rule, log, "test", "(2.0.5,)", version); - enforceFalse(rule, log, "test", "2.0.6", version); - - enforceFalse(rule, log, "test", "[2.0.4,2.0.5)", version); - - // make sure to handle the invalid range specification - enforceFalse(rule, log, "test", "[[2.0.4,2.0.5)", version); - } -} diff --git a/maven-enforcer-plugin/src/it/projects/require-java-version/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-java-version/verify.groovy new file mode 100644 index 0000000..e029bdb --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-java-version/verify.groovy @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +def buildLog = new File(basedir, 'build.log').text + +// rule executed +assert buildLog.contains('[INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion executed') +assert buildLog.contains('[INFO] Rule 1: org.apache.maven.enforcer.rules.version.RequireJavaVersion executed') diff --git a/maven-enforcer-plugin/src/it/projects/require-maven-version/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-maven-version/verify.groovy new file mode 100644 index 0000000..9b01abe --- /dev/null +++ b/maven-enforcer-plugin/src/it/projects/require-maven-version/verify.groovy @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +def buildLog = new File(basedir, 'build.log').text + +// rule executed +assert buildLog.contains('[INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireMavenVersion executed') +assert buildLog.contains('[INFO] Rule 1: org.apache.maven.enforcer.rules.version.RequireMavenVersion executed') diff --git a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java index d9ffddd..eebb7fb 100644 --- a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java +++ b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java @@ -19,6 +19,7 @@ package org.apache.maven.plugins.enforcer; import org.apache.maven.enforcer.rules.utils.OSUtil; +import org.apache.maven.enforcer.rules.version.RequireJavaVersion; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugins.annotations.Mojo;