From f3ff6a3ad39b7cff4619dde51127366dc2346f42 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Tue, 11 Jan 2022 13:04:46 +0100 Subject: [PATCH 1/3] Fix detection of plugin updates requiring newer Maven for building than for running Separate minimal Maven version detection for projects from requirements of plugins This closes #526 --- src/it-repo/dummy-maven-plugin-3.1.pom | 21 + .../invoker.properties | 1 + .../pom.xml | 45 ++ .../verify.bsh | 33 ++ .../versions/DisplayPluginUpdatesMojo.java | 58 +- ...va => MinimalMavenBuildVersionFinder.java} | 97 +--- .../RequiredMavenVersionFinderTest.java | 530 ------------------ 7 files changed, 158 insertions(+), 627 deletions(-) create mode 100644 src/it/it-display-plugin-updates-010-issue-526/invoker.properties create mode 100644 src/it/it-display-plugin-updates-010-issue-526/pom.xml create mode 100644 src/it/it-display-plugin-updates-010-issue-526/verify.bsh rename src/main/java/org/codehaus/mojo/versions/{RequiredMavenVersionFinder.java => MinimalMavenBuildVersionFinder.java} (68%) delete mode 100644 src/test/java/org/codehaus/mojo/versions/RequiredMavenVersionFinderTest.java diff --git a/src/it-repo/dummy-maven-plugin-3.1.pom b/src/it-repo/dummy-maven-plugin-3.1.pom index dc8a00526..ba9772205 100644 --- a/src/it-repo/dummy-maven-plugin-3.1.pom +++ b/src/it-repo/dummy-maven-plugin-3.1.pom @@ -119,6 +119,27 @@ + + + maven-enforcer-plugin + 3.0.0 + + + enforce-maven + + enforce + + + + + 3.8.4 + + + + + + + diff --git a/src/it/it-display-plugin-updates-010-issue-526/invoker.properties b/src/it/it-display-plugin-updates-010-issue-526/invoker.properties new file mode 100644 index 000000000..3e9221daf --- /dev/null +++ b/src/it/it-display-plugin-updates-010-issue-526/invoker.properties @@ -0,0 +1 @@ +invoker.goals=${project.groupId}:${project.artifactId}:${project.version}:display-plugin-updates diff --git a/src/it/it-display-plugin-updates-010-issue-526/pom.xml b/src/it/it-display-plugin-updates-010-issue-526/pom.xml new file mode 100644 index 000000000..475104b78 --- /dev/null +++ b/src/it/it-display-plugin-updates-010-issue-526/pom.xml @@ -0,0 +1,45 @@ + + 4.0.0 + + localhost + it-101 + 1.0 + pom + display-plugin-updates + IT for https://github.com/mojohaus/versions-maven-plugin/issues/526 + + + + + + localhost + dummy-maven-plugin + 1.0 + + + + + + maven-enforcer-plugin + 3.0.0 + + + enforce-maven + + enforce + + + + + 3.3.9 + + + + + + + + + + diff --git a/src/it/it-display-plugin-updates-010-issue-526/verify.bsh b/src/it/it-display-plugin-updates-010-issue-526/verify.bsh new file mode 100644 index 000000000..c596e415b --- /dev/null +++ b/src/it/it-display-plugin-updates-010-issue-526/verify.bsh @@ -0,0 +1,33 @@ +import java.io.*; +import org.codehaus.plexus.util.FileUtils; +import java.util.regex.*; + +try +{ + File file = new File( basedir, "build.log" ); + String buf = FileUtils.fileRead( file ); + + Pattern p1 = Pattern.compile( "\\QNo plugins require a newer version of Maven than specified by the pom.\\E" ); + Matcher m1 = p1.matcher( buf.toString() ); + Pattern p2 = Pattern.compile( "\\Qlocalhost:dummy-maven-plugin\\E\\s*\\.*\\s*\\Q1.0 -> 3.1\\E" ); + Matcher m2 = p2.matcher( buf.toString() ); + if ( !m1.find() ) + { + System.out.println( "Did not correctly detect minimum Maven build version 3.0 of this project" ); + return false; + } + if ( !m2.find() ) + { + System.out.println( "Did not suggest updating dummy-maven-plugin to version 3.1" ); + return false; + } + System.out.println( m1.group( 0 ) ); + System.out.println( m2.group( 0 ) ); +} +catch( Throwable t ) +{ + t.printStackTrace(); + return false; +} + +return true; diff --git a/src/main/java/org/codehaus/mojo/versions/DisplayPluginUpdatesMojo.java b/src/main/java/org/codehaus/mojo/versions/DisplayPluginUpdatesMojo.java index 2bff6801b..7ed7ca4b2 100644 --- a/src/main/java/org/codehaus/mojo/versions/DisplayPluginUpdatesMojo.java +++ b/src/main/java/org/codehaus/mojo/versions/DisplayPluginUpdatesMojo.java @@ -38,6 +38,7 @@ import org.apache.maven.lifecycle.mapping.LifecycleMapping; import org.apache.maven.model.Model; import org.apache.maven.model.Plugin; +import org.apache.maven.model.Prerequisites; import org.apache.maven.model.Profile; import org.apache.maven.model.ReportPlugin; import org.apache.maven.model.io.xpp3.MavenXpp3Writer; @@ -382,7 +383,7 @@ public void execute() List pluginUpdates = new ArrayList<>(); List pluginLockdowns = new ArrayList<>(); ArtifactVersion curMavenVersion = runtimeInformation.getApplicationVersion(); - ArtifactVersion specMavenVersion = new DefaultArtifactVersion( getRequiredMavenVersion( getProject(), "2.0" ) ); + ArtifactVersion specMavenVersion = MinimalMavenBuildVersionFinder.find( getProject(), "2.0", getLog() ); ArtifactVersion minMavenVersion = null; boolean superPomDrivingMinVersion = false; // if Maven prerequisite upgraded to a version, Map @@ -433,8 +434,7 @@ public void execute() getHelper().resolveArtifact( probe, true ); MavenProject pluginMavenProject = projectBuilder.buildFromRepository( probe, remotePluginRepositories, localRepository ); - ArtifactVersion pluginRequires = - new DefaultArtifactVersion( getRequiredMavenVersion( pluginMavenProject, "2.0" ) ); + ArtifactVersion pluginRequires = getPrerequisitesMavenVersion( pluginMavenProject ); if ( artifactVersion == null && compare( specMavenVersion, pluginRequires ) >= 0 ) { // ok, newer version compatible with current specMavenVersion @@ -492,8 +492,7 @@ public void execute() getHelper().resolveArtifact( probe, true ); MavenProject mavenProject = projectBuilder.buildFromRepository( probe, remotePluginRepositories, localRepository ); - ArtifactVersion requires = - new DefaultArtifactVersion( getRequiredMavenVersion( mavenProject, "2.0" ) ); + ArtifactVersion requires = getPrerequisitesMavenVersion( mavenProject ); if ( minMavenVersion == null || compare( minMavenVersion, requires ) < 0 ) { minMavenVersion = requires; @@ -595,30 +594,14 @@ && new DefaultArtifactVersion( effectiveVersion ).compareTo( new DefaultArtifact logLine( false, "" ); // information on minimum Maven version - boolean noMavenMinVersion = getRequiredMavenVersion( getProject(), null ) == null; - boolean noExplicitMavenMinVersion = - getProject().getPrerequisites() == null || getProject().getPrerequisites().getMaven() == null; + boolean noMavenMinVersion = MinimalMavenBuildVersionFinder.find( getProject(), null, getLog() ) == null; if ( noMavenMinVersion ) { - getLog().warn( "Project does not define minimum Maven version, default is: 2.0" ); - } - else if ( noExplicitMavenMinVersion ) - { - logLine( false, "Project inherits minimum Maven version as: " + specMavenVersion ); + getLog().warn( "Project does not define minimum Maven version required for build, default is: 2.0" ); } else { - ArtifactVersion explicitMavenVersion = - new DefaultArtifactVersion( getProject().getPrerequisites().getMaven() ); - if ( compare( explicitMavenVersion, specMavenVersion ) < 0 ) - { - logLine( true, "Project's effective minimum Maven (from parent) is: " + specMavenVersion ); - logLine( true, "Project defines minimum Maven version as: " + explicitMavenVersion ); - } - else - { - logLine( false, "Project defines minimum Maven version as: " + specMavenVersion ); - } + logLine( false, "Project requires minimum Maven version for build of: " + specMavenVersion ); } logLine( false, "Plugins require minimum Maven version of: " + minMavenVersion ); if ( superPomDrivingMinVersion ) @@ -822,13 +805,6 @@ private String compactKey( String groupId, String artifactId ) return groupId + ":" + artifactId; } - private String getRequiredMavenVersion( MavenProject mavenProject, String defaultValue ) - { - ArtifactVersion requiredMavenVersion = new RequiredMavenVersionFinder( mavenProject ).find(); - - return requiredMavenVersion == null ? defaultValue : requiredMavenVersion.toString(); - } - private static final class StackState { private final String path; @@ -936,6 +912,26 @@ else if ( event.isEndElement() ) // -------------------------- OTHER METHODS -------------------------- + /** + * Get the minimum required Maven version of the given plugin + * Same logic as in https://github.com/apache/maven-plugin-tools/blob/c8ddcdcb10d342a5a5e2f38245bb569af5730c7c/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java#L711 + * @param pluginProject the plugin for which to retrieve the minimum Maven version which is required + * @return The minimally required Maven version (never {@code null}) + */ + private ArtifactVersion getPrerequisitesMavenVersion( MavenProject pluginProject ) { + Prerequisites prerequisites = pluginProject.getPrerequisites(); + if (null == prerequisites) { + return new DefaultArtifactVersion("2.0"); + } + + String prerequisitesMavenValue = prerequisites.getMaven(); + if (null == prerequisitesMavenValue) { + return new DefaultArtifactVersion("2.0"); + } + + return new DefaultArtifactVersion(prerequisitesMavenValue); + } + /** * Gets the build plugins of a specific project. * diff --git a/src/main/java/org/codehaus/mojo/versions/RequiredMavenVersionFinder.java b/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java similarity index 68% rename from src/main/java/org/codehaus/mojo/versions/RequiredMavenVersionFinder.java rename to src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java index bf942f5da..4117f3f3f 100644 --- a/src/main/java/org/codehaus/mojo/versions/RequiredMavenVersionFinder.java +++ b/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java @@ -1,108 +1,93 @@ package org.codehaus.mojo.versions; +import java.util.ArrayList; +import java.util.List; + import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.model.Plugin; import org.apache.maven.model.PluginExecution; -import org.apache.maven.model.Prerequisites; +import org.apache.maven.plugin.logging.Log; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.util.xml.Xpp3Dom; -import java.util.ArrayList; -import java.util.List; - /** - * Finds the minimum Maven version required by a Maven project. - * Checks for the existence of both the prerequisites.maven property and for maven-enforcer-plugin:enforce goal. - * Returns null if no minimum version is found. - * Checks project and it's parents recursively. - * - * Pros: works with Maven 3.5.0 which throws a warning if prerequisites.maven is set for a non Maven-Plugin project. - * Cons: tightly coupled with the maven-enforcer-plugin and the Xpp3Dom configuration tag. + * Finds the minimal Maven version required to build a Maven project. + * Evaluates the {@code maven-enforcer-plugin:enforce} goal and + * its {@code requireMavenVersion} rule. + * + * @see Require Maven Version Rule */ -class RequiredMavenVersionFinder { +class MinimalMavenBuildVersionFinder { - private final MavenProject mavenProject; - - RequiredMavenVersionFinder(MavenProject mavenProject) { - this.mavenProject = mavenProject; + private MinimalMavenBuildVersionFinder() { + // not supposed to be created, static methods only } - ArtifactVersion find() { - ArtifactVersion childMavenVersion = getHighestArtifactVersion(getPrerequisitesMavenVersion(), getEnforcerMavenVersion()); - - if (!mavenProject.hasParent()) { - return childMavenVersion; - } - - ArtifactVersion parentMavenVersion = new RequiredMavenVersionFinder(mavenProject.getParent()).find(); - - return getHighestArtifactVersion(childMavenVersion, parentMavenVersion); - } - - private ArtifactVersion getPrerequisitesMavenVersion() { - Prerequisites prerequisites = mavenProject.getPrerequisites(); - if (null == prerequisites) { - return null; - } - - String prerequisitesMavenValue = prerequisites.getMaven(); - if (null == prerequisitesMavenValue) { - return null; + static ArtifactVersion find(MavenProject mavenProject, String defaultVersion, Log log) { + ArtifactVersion version = getEnforcerMavenVersion(mavenProject, log); + if (version == null && defaultVersion != null) { + version = new DefaultArtifactVersion(defaultVersion); } - - return new DefaultArtifactVersion(prerequisitesMavenValue); + return version; } - private ArtifactVersion getEnforcerMavenVersion() { + private static ArtifactVersion getEnforcerMavenVersion(MavenProject mavenProject, Log log) { List buildPlugins = mavenProject.getBuildPlugins(); if (null == buildPlugins) { + log.debug("MinimalMavenBuildVersionFinder: No build plugins found"); return null; } Plugin mavenEnforcerPlugin = getMavenEnforcerPlugin(buildPlugins); if (null == mavenEnforcerPlugin) { + log.debug("MinimalMavenBuildVersionFinder: No maven-enforcer-plugin used"); return null; } List pluginExecutions = mavenEnforcerPlugin.getExecutions(); if (null == pluginExecutions) { + log.debug("MinimalMavenBuildVersionFinder: No executions of maven-enforcer-plugin found"); return null; } List pluginExecutionsWithEnforceGoal = getPluginExecutionsWithEnforceGoal(pluginExecutions); if (pluginExecutionsWithEnforceGoal.isEmpty()) { + log.debug("MinimalMavenBuildVersionFinder: No 'enforce' execution of maven-enforcer-plugin found"); return null; } Xpp3Dom requireMavenVersionTag = getRequireMavenVersionTag(pluginExecutionsWithEnforceGoal); if (null == requireMavenVersionTag) { + log.debug("MinimalMavenBuildVersionFinder: No 'requireMavenVersion' rule of maven-enforcer-plugin found"); return null; } Xpp3Dom versionTag = requireMavenVersionTag.getChild("version"); if (null == versionTag) { + log.debug("MinimalMavenBuildVersionFinder: No version specified in 'requireMavenVersion' rule of maven-enforcer-plugin"); return null; } String versionTagValue = versionTag.getValue(); if (null == versionTagValue || "".equals(versionTagValue)) { + log.debug("MinimalMavenBuildVersionFinder: Empty version specified in 'requireMavenVersion' rule of maven-enforcer-plugin"); return null; } return processMavenVersionRange(versionTagValue); } - - private Plugin getMavenEnforcerPlugin(List buildPlugins) { + + private static Plugin getMavenEnforcerPlugin(List buildPlugins) { for (Plugin plugin : buildPlugins) { - if ("maven-enforcer-plugin".equals(plugin.getArtifactId())) { + if ("maven-enforcer-plugin".equals(plugin.getArtifactId()) && "org.apache.maven.plugins".equals(plugin.getGroupId())) { return plugin; } } return null; } - private List getPluginExecutionsWithEnforceGoal(List executions) { + private static List getPluginExecutionsWithEnforceGoal(List executions) { List pluginExecutions = new ArrayList<>(); for (PluginExecution pluginExecution : executions) { List goals = pluginExecution.getGoals(); @@ -113,7 +98,7 @@ private List getPluginExecutionsWithEnforceGoal(List executions) { + private static Xpp3Dom getRequireMavenVersionTag(List executions) { for (PluginExecution pluginExecution : executions) { Xpp3Dom configurationTag = (Xpp3Dom) pluginExecution.getConfiguration(); if (null == configurationTag) { @@ -135,30 +120,10 @@ private Xpp3Dom getRequireMavenVersionTag(List executions) { return null; } - private ArtifactVersion getHighestArtifactVersion(ArtifactVersion firstMavenVersion, ArtifactVersion secondMavenVersion) { - if (null == firstMavenVersion && null == secondMavenVersion) { - return null; - } - - if (null == firstMavenVersion) { - return secondMavenVersion; - } - - if (null == secondMavenVersion) { - return firstMavenVersion; - } - - if (firstMavenVersion.compareTo(secondMavenVersion) < 0) { - return secondMavenVersion; - } - - return firstMavenVersion; - } - /** * The below method implements the specification found at https://maven.apache.org/enforcer/enforcer-rules/versionRanges.html */ - private ArtifactVersion processMavenVersionRange(String versionRange) { + private static ArtifactVersion processMavenVersionRange(String versionRange) { int openIndicesCount = 0; int closeIndicesCount = 0; diff --git a/src/test/java/org/codehaus/mojo/versions/RequiredMavenVersionFinderTest.java b/src/test/java/org/codehaus/mojo/versions/RequiredMavenVersionFinderTest.java deleted file mode 100644 index 45176ee75..000000000 --- a/src/test/java/org/codehaus/mojo/versions/RequiredMavenVersionFinderTest.java +++ /dev/null @@ -1,530 +0,0 @@ -package org.codehaus.mojo.versions; - -import org.apache.maven.artifact.versioning.DefaultArtifactVersion; -import org.apache.maven.model.Plugin; -import org.apache.maven.model.PluginExecution; -import org.apache.maven.model.Prerequisites; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import java.util.ArrayList; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.mockito.Mockito.when; - -/** - * Unit tests for RequiredMavenVersionFinder. - */ -@RunWith(MockitoJUnitRunner.class) -public class RequiredMavenVersionFinderTest { - - @Mock - private MavenProject mavenProject; - @Mock - private Prerequisites prerequisites; - @Mock - private Plugin nonEnforcerPlugin; - @Mock - private Plugin enforcerPlugin; - @Mock - private PluginExecution pluginExecution; - @Mock - private PluginExecution otherPluginExecution; - @Mock - private Xpp3Dom configurationTag; - @Mock - private Xpp3Dom otherConfigurationTag; - @Mock - private Xpp3Dom rulesTag; - @Mock - private Xpp3Dom otherRulesTag; - @Mock - private Xpp3Dom requireMavenVersionTag; - @Mock - private Xpp3Dom versionTag; - @Mock - private MavenProject parentMavenProject; - @Mock - private Prerequisites parentPrerequisites; - - @Before - public void setup() { - when(mavenProject.getPrerequisites()).thenReturn(null); - when(mavenProject.getBuildPlugins()).thenReturn(null); - when(mavenProject.hasParent()).thenReturn(false); - when(prerequisites.getMaven()).thenReturn(null); - when(nonEnforcerPlugin.getArtifactId()).thenReturn(null); - when(enforcerPlugin.getArtifactId()).thenReturn("maven-enforcer-plugin"); - when(enforcerPlugin.getExecutions()).thenReturn(null); - when(pluginExecution.getGoals()).thenReturn(null); - when(parentMavenProject.getPrerequisites()).thenReturn(null); - when(parentMavenProject.getBuildPlugins()).thenReturn(null); - when(parentMavenProject.hasParent()).thenReturn(false); - when(parentPrerequisites.getMaven()).thenReturn(null); - } - - @Test - public void findReturnsNullWhenPrerequisitesAreNullAndBuildPluginListIsNull() { - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenPrerequisitesMavenVersionIsNull() { - when(mavenProject.getPrerequisites()).thenReturn(prerequisites); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNotNullWhenPrerequisitesMavenVersionIsNotNull() { - String mavenVersion = "1"; - when(mavenProject.getPrerequisites()).thenReturn(prerequisites); - when(prerequisites.getMaven()).thenReturn(mavenVersion); - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(mavenVersion); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenBuildPluginsListDoesNotContainEnforcerPlugin() { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(nonEnforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenEnforcerExecutionsIsNull() { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenExecutionsListIsEmpty() { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenExecutionGoalsListIsNull() { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(pluginExecution); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenPopulatedExecutionsListDoNotContainEnforcerExecution() { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(pluginExecution); - ArrayList goals = new ArrayList<>(); - when(pluginExecution.getGoals()).thenReturn(goals); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenEnforceGoalConfigurationIsNull() { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(pluginExecution); - ArrayList goals = new ArrayList<>(); - goals.add("enforce"); - when(pluginExecution.getGoals()).thenReturn(goals); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - when(pluginExecution.getConfiguration()).thenReturn(null); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenRulesChildIsNull() { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(pluginExecution); - ArrayList goals = new ArrayList<>(); - goals.add("enforce"); - when(pluginExecution.getGoals()).thenReturn(goals); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - when(pluginExecution.getConfiguration()).thenReturn(configurationTag); - when(configurationTag.getChild("rules")).thenReturn(null); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenRequiredMavenVersionChildIsNull() { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(pluginExecution); - ArrayList goals = new ArrayList<>(); - goals.add("enforce"); - when(pluginExecution.getGoals()).thenReturn(goals); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - when(pluginExecution.getConfiguration()).thenReturn(configurationTag); - when(configurationTag.getChild("rules")).thenReturn(rulesTag); - when(rulesTag.getChild("requireMavenVersion")).thenReturn(null); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionChildIsNull() { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(pluginExecution); - ArrayList goals = new ArrayList<>(); - goals.add("enforce"); - when(pluginExecution.getGoals()).thenReturn(goals); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - when(pluginExecution.getConfiguration()).thenReturn(configurationTag); - when(configurationTag.getChild("rules")).thenReturn(rulesTag); - when(rulesTag.getChild("requireMavenVersion")).thenReturn(requireMavenVersionTag); - when(requireMavenVersionTag.getChild("version")).thenReturn(null); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - private void findReturnsValueWhenVersionTagValueIsSet(String mavenVersionRange) { - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(pluginExecution); - ArrayList goals = new ArrayList<>(); - goals.add("enforce"); - when(pluginExecution.getGoals()).thenReturn(goals); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - when(pluginExecution.getConfiguration()).thenReturn(configurationTag); - when(configurationTag.getChild("rules")).thenReturn(rulesTag); - when(rulesTag.getChild("requireMavenVersion")).thenReturn(requireMavenVersionTag); - when(requireMavenVersionTag.getChild("version")).thenReturn(versionTag); - when(versionTag.getValue()).thenReturn(mavenVersionRange); - } - - @Test - public void findReturnsNullWhenVersionTagValueIsNull() { - findReturnsValueWhenVersionTagValueIsSet(null); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenVersionTagValueIsValidSimpleRange() { - String mavenVersionRange = "1.0"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenSecondEnforcerExecutionIsValidAndFirstEnforcerExecutionHasNoConfigurationTag() { - String mavenVersionRange = "1.0"; - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(otherPluginExecution); - pluginExecutions.add(pluginExecution); - ArrayList goals = new ArrayList<>(); - ArrayList otherGoals = new ArrayList<>(); - goals.add("enforce"); - otherGoals.add("enforce"); - when(pluginExecution.getGoals()).thenReturn(goals); - when(otherPluginExecution.getGoals()).thenReturn(otherGoals); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - when(pluginExecution.getConfiguration()).thenReturn(configurationTag); - when(otherPluginExecution.getConfiguration()).thenReturn(null); - when(configurationTag.getChild("rules")).thenReturn(rulesTag); - when(rulesTag.getChild("requireMavenVersion")).thenReturn(requireMavenVersionTag); - when(requireMavenVersionTag.getChild("version")).thenReturn(versionTag); - when(versionTag.getValue()).thenReturn(mavenVersionRange); - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenSecondEnforcerExecutionIsValidAndFirstEnforcerExecutionHasNoRulesTag() { - String mavenVersionRange = "1.0"; - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(otherPluginExecution); - pluginExecutions.add(pluginExecution); - ArrayList goals = new ArrayList<>(); - ArrayList otherGoals = new ArrayList<>(); - goals.add("enforce"); - otherGoals.add("enforce"); - when(pluginExecution.getGoals()).thenReturn(goals); - when(otherPluginExecution.getGoals()).thenReturn(otherGoals); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - when(pluginExecution.getConfiguration()).thenReturn(configurationTag); - when(otherPluginExecution.getConfiguration()).thenReturn(otherConfigurationTag); - when(configurationTag.getChild("rules")).thenReturn(rulesTag); - when(otherConfigurationTag.getChild("rules")).thenReturn(null); - when(rulesTag.getChild("requireMavenVersion")).thenReturn(requireMavenVersionTag); - when(requireMavenVersionTag.getChild("version")).thenReturn(versionTag); - when(versionTag.getValue()).thenReturn(mavenVersionRange); - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenSecondEnforcerExecutionIsValidAndFirstEnforcerExecutionHasNoRequireMavenVersionTag() { - String mavenVersionRange = "1.0"; - ArrayList buildPlugins = new ArrayList<>(); - buildPlugins.add(enforcerPlugin); - when(mavenProject.getBuildPlugins()).thenReturn(buildPlugins); - ArrayList pluginExecutions = new ArrayList<>(); - pluginExecutions.add(otherPluginExecution); - pluginExecutions.add(pluginExecution); - ArrayList goals = new ArrayList<>(); - ArrayList otherGoals = new ArrayList<>(); - goals.add("enforce"); - otherGoals.add("enforce"); - when(pluginExecution.getGoals()).thenReturn(goals); - when(otherPluginExecution.getGoals()).thenReturn(otherGoals); - when(enforcerPlugin.getExecutions()).thenReturn(pluginExecutions); - when(pluginExecution.getConfiguration()).thenReturn(configurationTag); - when(otherPluginExecution.getConfiguration()).thenReturn(otherConfigurationTag); - when(configurationTag.getChild("rules")).thenReturn(rulesTag); - when(otherConfigurationTag.getChild("rules")).thenReturn(otherRulesTag); - when(rulesTag.getChild("requireMavenVersion")).thenReturn(requireMavenVersionTag); - when(otherRulesTag.getChild("requireMavenVersion")).thenReturn(null); - when(requireMavenVersionTag.getChild("version")).thenReturn(versionTag); - when(versionTag.getValue()).thenReturn(mavenVersionRange); - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenVersionTagValueSetsExact() { - String mavenVersionRange = "[1.0]"; - String minimumVersion = "1.0"; - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(minimumVersion); - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueSetsInclusiveMax() { - String mavenVersionRange = "(,1.0]"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueSetsExclusiveMax() { - String mavenVersionRange = "(,1.0)"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenVersionTagValueSetsInclusiveMin() { - String mavenVersionRange = "[1.0,)"; - String minimumVersion = "1.0"; - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(minimumVersion); - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenVersionTagValueSetsExclusiveMin() { - String mavenVersionRange = "(1.0,)"; - String minimumVersion = "1.0"; - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(minimumVersion); - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenVersionTagValueSetsExclusiveMinExclusiveMax() { - String mavenVersionRange = "(1.0,2.0)"; - String minimumVersion = "1.0"; - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(minimumVersion); - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenVersionTagValueSetsInclusiveMinInclusiveMax() { - String mavenVersionRange = "[1.0,2.0]"; - String minimumVersion = "1.0"; - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(minimumVersion); - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenVersionTagValueSetsInclusiveMinExclusiveMax() { - String mavenVersionRange = "[1.0,2.0)"; - String minimumVersion = "1.0"; - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(minimumVersion); - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsValueWhenVersionTagValueSetsExclusiveMinInclusiveMax() { - String mavenVersionRange = "(1.0,2.0]"; - String minimumVersion = "1.0"; - DefaultArtifactVersion artifactVersion = new DefaultArtifactVersion(minimumVersion); - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertEquals(artifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueSetsInclusiveLowerMaxInclusiveHigherMin() { - String mavenVersionRange = "(,1.0],[1.2,)"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueSetsExclusiveLowerMaxExclusiveHigherMin() { - String mavenVersionRange = "(,1.1),(1.1,)"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueSetsInclusiveLowerMaxExclusiveHigherMin() { - String mavenVersionRange = "(,1.1],(1.1,)"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueSetsExclusiveLowerMaxInclusiveHigherMin() { - String mavenVersionRange = "(,1.1),[1.1,)"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueOpenCharsCountGreaterThanCloseCharCount() { - String mavenVersionRange = "(1.0"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueOpenCharsCountLessThanCloseCharCount() { - String mavenVersionRange = "1.0)"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueDoesNotStartWithAnOpenChar() { - String mavenVersionRange = "1.0()"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueDoesNotEndWithAnCloseChar() { - String mavenVersionRange = "()1.0"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenVersionTagValueOpenAndCloseTagsNotSameWhenNoComma() { - String mavenVersionRange = "(1.0]"; - findReturnsValueWhenVersionTagValueIsSet(mavenVersionRange); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsNullWhenChildWithoutVersionAndParentWithoutVersion() { - when(mavenProject.hasParent()).thenReturn(true); - when(mavenProject.getParent()).thenReturn(parentMavenProject); - assertNull(new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsChildVersionWhenChildWithVersionAndParentWithoutVersion() { - when(mavenProject.hasParent()).thenReturn(true); - when(mavenProject.getParent()).thenReturn(parentMavenProject); - when(mavenProject.getPrerequisites()).thenReturn(prerequisites); - String childMavenVersion = "1"; - when(prerequisites.getMaven()).thenReturn(childMavenVersion); - DefaultArtifactVersion childArtifactVersion = new DefaultArtifactVersion(childMavenVersion); - assertEquals(childArtifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsParentVersionWhenChildWithoutVersionAndParentWithVersion() { - when(mavenProject.hasParent()).thenReturn(true); - when(mavenProject.getParent()).thenReturn(parentMavenProject); - when(parentMavenProject.getPrerequisites()).thenReturn(parentPrerequisites); - String parentMavenVersion = "1"; - when(parentPrerequisites.getMaven()).thenReturn(parentMavenVersion); - DefaultArtifactVersion parentArtifactVersion = new DefaultArtifactVersion(parentMavenVersion); - assertEquals(parentArtifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsChildVersionWhenChildWithMatchingVersionAndParentWithMatchingVersion() { - when(mavenProject.hasParent()).thenReturn(true); - when(mavenProject.getParent()).thenReturn(parentMavenProject); - when(mavenProject.getPrerequisites()).thenReturn(prerequisites); - String childMavenVersion = "1"; - when(prerequisites.getMaven()).thenReturn(childMavenVersion); - when(parentMavenProject.getPrerequisites()).thenReturn(parentPrerequisites); - String parentMavenVersion = "1"; - when(parentPrerequisites.getMaven()).thenReturn(parentMavenVersion); - DefaultArtifactVersion childArtifactVersion = new DefaultArtifactVersion(childMavenVersion); - assertEquals(childArtifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsChildVersionWhenChildWithHigherVersionAndParentWithLowerVersion() { - when(mavenProject.hasParent()).thenReturn(true); - when(mavenProject.getParent()).thenReturn(parentMavenProject); - String childMavenVersion = "2"; - DefaultArtifactVersion childArtifactVersion = new DefaultArtifactVersion(childMavenVersion); - when(mavenProject.getPrerequisites()).thenReturn(prerequisites); - when(prerequisites.getMaven()).thenReturn(childMavenVersion); - when(parentMavenProject.getPrerequisites()).thenReturn(parentPrerequisites); - String parentMavenVersion = "1"; - when(parentPrerequisites.getMaven()).thenReturn(parentMavenVersion); - assertEquals(childArtifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } - - @Test - public void findReturnsParentVersionWhenChildWithLowerVersionAndParentWithHigherVersion() { - when(mavenProject.hasParent()).thenReturn(true); - when(mavenProject.getParent()).thenReturn(parentMavenProject); - when(mavenProject.getPrerequisites()).thenReturn(prerequisites); - String childMavenVersion = "1"; - when(prerequisites.getMaven()).thenReturn(childMavenVersion); - when(parentMavenProject.getPrerequisites()).thenReturn(parentPrerequisites); - String parentMavenVersion = "2"; - when(parentPrerequisites.getMaven()).thenReturn(parentMavenVersion); - DefaultArtifactVersion parentArtifactVersion = new DefaultArtifactVersion(parentMavenVersion); - assertEquals(parentArtifactVersion, new RequiredMavenVersionFinder(mavenProject).find()); - } -} From da6bb9761ddfab40766a69621f47f040f491b6f3 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Wed, 12 Jan 2022 12:46:52 +0100 Subject: [PATCH 2/3] re-add tests for parsing version ranges from enforcer-maven-plugin configuration --- .../MinimalMavenBuildVersionFinder.java | 4 +- .../MinimalMavenBuildVersionFinderTest.java | 41 +++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 src/test/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinderTest.java diff --git a/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java b/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java index 4117f3f3f..17fd41d7b 100644 --- a/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java +++ b/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java @@ -75,7 +75,7 @@ private static ArtifactVersion getEnforcerMavenVersion(MavenProject mavenProject return null; } - return processMavenVersionRange(versionTagValue); + return getMinimumVersionFromRange(versionTagValue); } private static Plugin getMavenEnforcerPlugin(List buildPlugins) { @@ -123,7 +123,7 @@ private static Xpp3Dom getRequireMavenVersionTag(List execution /** * The below method implements the specification found at https://maven.apache.org/enforcer/enforcer-rules/versionRanges.html */ - private static ArtifactVersion processMavenVersionRange(String versionRange) { + static ArtifactVersion getMinimumVersionFromRange(String versionRange) { int openIndicesCount = 0; int closeIndicesCount = 0; diff --git a/src/test/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinderTest.java b/src/test/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinderTest.java new file mode 100644 index 000000000..3d5fc064d --- /dev/null +++ b/src/test/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinderTest.java @@ -0,0 +1,41 @@ +package org.codehaus.mojo.versions; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.junit.Test; + +/** + * Unit tests for MinimalMavenBuildVersionFinder. + */ +public class MinimalMavenBuildVersionFinderTest { + + @Test + public void testValidVersionRanges() { + DefaultArtifactVersion expectedMinimumVersion = new DefaultArtifactVersion("1.0"); + assertEquals(expectedMinimumVersion, MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("1.0")); + assertEquals(expectedMinimumVersion, MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("[1.0]")); + assertEquals(expectedMinimumVersion, MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("[1.0,)")); + assertEquals(expectedMinimumVersion, MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(1.0,)")); + assertEquals(expectedMinimumVersion, MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("[1.0,2.0]")); + assertEquals(expectedMinimumVersion, MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(1.0,2.0)")); + assertEquals(expectedMinimumVersion, MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(1.0,2.0]")); + assertEquals(expectedMinimumVersion, MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("[1.0,2.0)")); + } + + @Test + public void testInvalidVersionRanges() { + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(,1.0]")); + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(,1.0)")); + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(,1.0],[1.2,)")); + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(,1.1),(1.1,)")); + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(,1.1),[1.1,)")); + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(1.0")); + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("1.0)")); + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("1.0()")); + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("()1.0")); + assertNull(MinimalMavenBuildVersionFinder.getMinimumVersionFromRange("(1.0]")); + } + +} From 8050a27ec0e531d773c5f64541a0ab99c5d88b66 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Wed, 12 Jan 2022 12:53:48 +0100 Subject: [PATCH 3/3] add some more logging --- .../mojo/versions/MinimalMavenBuildVersionFinder.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java b/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java index 17fd41d7b..a8d8b211b 100644 --- a/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java +++ b/src/main/java/org/codehaus/mojo/versions/MinimalMavenBuildVersionFinder.java @@ -74,8 +74,9 @@ private static ArtifactVersion getEnforcerMavenVersion(MavenProject mavenProject log.debug("MinimalMavenBuildVersionFinder: Empty version specified in 'requireMavenVersion' rule of maven-enforcer-plugin"); return null; } - - return getMinimumVersionFromRange(versionTagValue); + ArtifactVersion minimumVersion = getMinimumVersionFromRange(versionTagValue); + log.debug("Calculated minimum version " + minimumVersion + " from version parameter value '" + versionTagValue + "'"); + return minimumVersion; } private static Plugin getMavenEnforcerPlugin(List buildPlugins) {