This is an automated email from the ASF dual-hosted git repository. khmarbaise pushed a commit to branch MENFORCER-281 in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git
commit 5448dc4a6ceb995da6451d3b8293d25234102d1f Author: Karl Heinz Marbaise <[email protected]> AuthorDate: Sat Jan 6 20:09:35 2018 +0100 [MENFORCER-281] RequirePluginVersions broken with "CI Friendly versions" o Followup o Added selector condition to limit execution to Maven 3.5.0+ o Replaced EnforcerRuleUtils.getModelsRecursively method with session.getProjectDependencyGraph().getSortedProjects() o Removed the testGetAllPlugins() and all related tests cause it only tests the getModelsRecursively method. --- .../plugins/enforcer/RequirePluginVersions.java | 18 +-- .../plugins/enforcer/utils/EnforcerRuleUtils.java | 56 ------- .../enforcer/TestRequirePluginVersions.java | 38 ----- .../enforcer/utils/TestEnforcerRuleUtils.java | 161 --------------------- .../invoker.properties | 1 + 5 files changed, 7 insertions(+), 267 deletions(-) diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java index 81ebb5e..9e840da 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java +++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java @@ -19,7 +19,6 @@ package org.apache.maven.plugins.enforcer; * under the License. */ -import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; @@ -1046,19 +1045,14 @@ public class RequirePluginVersions List<PluginWrapper> plugins = new ArrayList<PluginWrapper>(); // get all the pom models - String pomName = null; - try - { - pomName = project.getFile().getName(); - } - catch ( Exception e ) + List<Model> models = new ArrayList<Model>(); + + List<MavenProject> sortedProjects = session.getProjectDependencyGraph().getSortedProjects(); + for ( MavenProject mavenProject : sortedProjects ) { - pomName = "pom.xml"; + models.add( mavenProject.getOriginalModel() ); } - List<Model> models = - utils.getModelsRecursively( project.getGroupId(), project.getArtifactId(), project.getVersion(), - new File( project.getBasedir(), pomName ) ); - + // now find all the plugin entries, either in // build.plugins or build.pluginManagement.plugins, profiles.plugins and reporting for ( Model model : models ) diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java index c5f4bdd..bdedb39 100644 --- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java +++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java @@ -22,7 +22,6 @@ package org.apache.maven.plugins.enforcer.utils; import java.io.File; import java.io.IOException; import java.io.Reader; -import java.util.ArrayList; import java.util.List; import org.apache.maven.artifact.Artifact; @@ -33,7 +32,6 @@ import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; import org.apache.maven.model.Model; -import org.apache.maven.model.Parent; import org.apache.maven.model.Plugin; import org.apache.maven.model.ReportPlugin; import org.apache.maven.model.io.xpp3.MavenXpp3Reader; @@ -212,60 +210,6 @@ public class EnforcerRuleUtils } /** - * This method loops through all the parents, getting each pom model and then its parent. - * - * @param groupId the group id - * @param artifactId the artifact id - * @param version the version - * @param pom the pom - * @return the models recursively - * @throws ArtifactResolutionException the artifact resolution exception - * @throws ArtifactNotFoundException the artifact not found exception - * @throws IOException Signals that an I/O exception has occurred. - * @throws XmlPullParserException the xml pull parser exception - */ - public List<Model> getModelsRecursively( String groupId, String artifactId, String version, File pom ) - throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException - { - List<Model> models = null; - Model model = getPomModel( groupId, artifactId, version, pom ); - - Parent parent = model.getParent(); - - // recurse into the parent - if ( parent != null ) - { - // get the relative path - String relativePath = parent.getRelativePath(); - if ( StringUtils.isEmpty( relativePath ) ) - { - relativePath = "../pom.xml"; - } - // calculate the recursive path - File parentPom = new File( pom.getParent(), relativePath ); - - // if relative path is a directory, append pom.xml - if ( parentPom.isDirectory() ) - { - parentPom = new File( parentPom, "pom.xml" ); - } - - //@formatter:off - models = getModelsRecursively( parent.getGroupId(), parent.getArtifactId(), - parent.getVersion(), parentPom ); - //@formatter:on - } - else - { - // only create it here since I'm not at the top - models = new ArrayList<Model>(); - } - models.add( model ); - - return models; - } - - /** * Make sure the model is the one I'm expecting. * * @param groupId the group id diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java index bbd4e8b..422967d 100644 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java +++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequirePluginVersions.java @@ -19,24 +19,17 @@ package org.apache.maven.plugins.enforcer; * under the License. */ -import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; -import org.apache.maven.artifact.resolver.ArtifactNotFoundException; -import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.testing.AbstractMojoTestCase; -import org.apache.maven.plugins.enforcer.utils.EnforcerRuleUtils; import org.apache.maven.plugins.enforcer.utils.PluginWrapper; -import org.codehaus.plexus.util.StringUtils; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; /** * The Class TestRequirePluginVersions. @@ -190,37 +183,6 @@ public class TestRequirePluginVersions } /** - * Test get all plugins. - * - * @throws ArtifactResolutionException the artifact resolution exception - * @throws ArtifactNotFoundException the artifact not found exception - * @throws IOException Signals that an I/O exception has occurred. - * @throws XmlPullParserException the xml pull parser exception - */ - public void testGetAllPlugins() - throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException - { - RequirePluginVersions rule = new RequirePluginVersions(); - String path = "target/test-classes/requirePluginVersions/getPomRecursively/b/c"; - - StringUtils.replace( path, "/", File.separator ); - - File projectDir = new File( getBasedir(), path ); - - MockProject project = new MockProject(); - project.setArtifactId( "c" ); - project.setGroupId( "group" ); - project.setVersion( "1.0" ); - project.setBaseDir( projectDir ); - - rule.setUtils( new EnforcerRuleUtils( EnforcerTestUtils.getHelper( project ) ) ); - List<PluginWrapper> plugins = rule.getAllPluginEntries( project ); - - // there should be 3 - assertEquals( 3, plugins.size() ); - } - - /** * Test get additional plugins null. * * @throws MojoExecutionException the mojo execution exception diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestEnforcerRuleUtils.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestEnforcerRuleUtils.java index 3583a6a..dc85ada 100644 --- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestEnforcerRuleUtils.java +++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/TestEnforcerRuleUtils.java @@ -19,12 +19,6 @@ package org.apache.maven.plugins.enforcer.utils; * under the License. */ -import java.io.File; -import java.io.IOException; -import java.util.List; - -import org.apache.maven.artifact.resolver.ArtifactNotFoundException; -import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.enforcer.rule.api.EnforcerRule; import org.apache.maven.enforcer.rule.api.EnforcerRuleException; import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper; @@ -32,9 +26,6 @@ import org.apache.maven.model.Model; import org.apache.maven.model.Parent; import org.apache.maven.plugin.testing.AbstractMojoTestCase; import org.apache.maven.plugins.enforcer.EnforcerTestUtils; -import org.apache.maven.plugins.enforcer.MockProject; -import org.codehaus.plexus.util.StringUtils; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; /** * The Class TestEnforcerRuleUtils. @@ -83,158 +74,6 @@ public class TestEnforcerRuleUtils } /** - * Test get models recursively bottom. - * - * @throws ArtifactResolutionException the artifact resolution exception - * @throws ArtifactNotFoundException the artifact not found exception - * @throws IOException Signals that an I/O exception has occurred. - * @throws XmlPullParserException the xml pull parser exception - */ - public void testGetModelsRecursivelyBottom() - throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException - { - String path = "target/test-classes/requirePluginVersions/getPomRecursively/b/c"; - - StringUtils.replace( path, "/", File.separator ); - - File pom = new File( getBasedir() + File.separator + path, "pom.xml" ); - - EnforcerRuleUtils utils = new EnforcerRuleUtils( EnforcerTestUtils.getHelper() ); - List models = utils.getModelsRecursively( "group", "c", "1.0", pom ); - - // there should be 3 - assertEquals( 3, models.size() ); - - // now make sure they are all there - Model m = new Model(); - m.setGroupId( "group" ); - m.setVersion( "1.0" ); - m.setArtifactId( "c" ); - - models.contains( m ); - - m.setArtifactId( "b" ); - models.contains( m ); - - m.setArtifactId( "a" ); - models.contains( m ); - } - - /** - * Test get models recursively top. - * - * @throws ArtifactResolutionException the artifact resolution exception - * @throws ArtifactNotFoundException the artifact not found exception - * @throws IOException Signals that an I/O exception has occurred. - * @throws XmlPullParserException the xml pull parser exception - */ - public void testGetModelsRecursivelyTop() - throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException - { - String path = "target/test-classes/requirePluginVersions/getPomRecursively"; - - StringUtils.replace( path, "/", File.separator ); - - File pom = new File( getBasedir() + File.separator + path, "pom.xml" ); - - EnforcerRuleUtils utils = new EnforcerRuleUtils( EnforcerTestUtils.getHelper() ); - - List models = utils.getModelsRecursively( "group", "a", "1.0", pom ); - - // there should be 1 - assertEquals( 1, models.size() ); - - // now make sure they are all there - Model m = new Model(); - m.setGroupId( "group" ); - m.setVersion( "1.0" ); - m.setArtifactId( "a" ); - - models.contains( m ); - } - - public void testGetModelsRecursivelyParentExpression() - throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException - { - String path = "target/test-classes/requirePluginVersions/parentExpression/child"; - - StringUtils.replace( path, "/", File.separator ); - - File pom = new File( getBasedir() + File.separator + path, "pom.xml" ); - - // bit backwards - the project here should really be the one read in the first stage of getModelsRecursively - MockProject parent = new MockProject(); - parent.setGroupId( "org.apache.maven.plugins.enforcer.test" ); - parent.setArtifactId( "parent" ); - parent.setVersion( "1.0-SNAPSHOT" ); - - MockProject project = new MockProject(); - project.setParent( parent ); - - EnforcerRuleUtils utils = new EnforcerRuleUtils( EnforcerTestUtils.getHelper( project ) ); - - List models = - utils.getModelsRecursively( "org.apache.maven.plugins.enforcer.test", "child", "1.0-SNAPSHOT", pom ); - - // there should be 2 - assertEquals( 2, models.size() ); - } - - public void testGetModelsRecursivelyParentRelativePath() - throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException - { - String path = "target/test-classes/requirePluginVersions/parentRelativePath"; - - StringUtils.replace( path, "/", File.separator ); - - File pom = new File( getBasedir() + File.separator + path, "pom.xml" ); - - // bit backwards - the project here should really be the one read in the first stage of getModelsRecursively - MockProject parent = new MockProject(); - parent.setGroupId( "org.apache.maven.plugins.enforcer.test" ); - parent.setArtifactId( "parent" ); - parent.setVersion( "1.0-SNAPSHOT" ); - - MockProject project = new MockProject(); - project.setParent( parent ); - - EnforcerRuleUtils utils = new EnforcerRuleUtils( EnforcerTestUtils.getHelper( project ) ); - - List models = - utils.getModelsRecursively( "org.apache.maven.plugins.enforcer.test", "aggregate", "1.0-SNAPSHOT", pom ); - - // there should be 2 - assertEquals( 2, models.size() ); - } - - public void testGetModelsRecursivelyParentRelativePathDirectory() - throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException - { - String path = "target/test-classes/requirePluginVersions/parentRelativePathDirectory"; - - StringUtils.replace( path, "/", File.separator ); - - File pom = new File( getBasedir() + File.separator + path, "pom.xml" ); - - // bit backwards - the project here should really be the one read in the first stage of getModelsRecursively - MockProject parent = new MockProject(); - parent.setGroupId( "org.apache.maven.plugins.enforcer.test" ); - parent.setArtifactId( "parent" ); - parent.setVersion( "1.0-SNAPSHOT" ); - - MockProject project = new MockProject(); - project.setParent( parent ); - - EnforcerRuleUtils utils = new EnforcerRuleUtils( EnforcerTestUtils.getHelper( project ) ); - - List models = - utils.getModelsRecursively( "org.apache.maven.plugins.enforcer.test", "aggregate", "1.0-SNAPSHOT", pom ); - - // there should be 2 - assertEquals( 2, models.size() ); - } - - /** * Simpler wrapper to execute and deal with the expected result. * * @param rule the rule diff --git a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-mm-ci-friendly/invoker.properties b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-mm-ci-friendly/invoker.properties index a07d2f1..1b78093 100644 --- a/maven-enforcer-plugin/src/it/projects/require-plugin-versions-mm-ci-friendly/invoker.properties +++ b/maven-enforcer-plugin/src/it/projects/require-plugin-versions-mm-ci-friendly/invoker.properties @@ -14,4 +14,5 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. +invoker.maven.version = 3.5.0+ invoker.goals = install -Drevision=0.10.0-SNAPSHOT \ No newline at end of file -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
