You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2021/04/23 09:04:37 UTC

[maven-plugin-tools] 03/05: [MPLUGIN-348] Why does maven-plugin-plugin always warn if goalPrefix is set?

This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch dependencies
in repository https://gitbox.apache.org/repos/asf/maven-plugin-tools.git

commit d5a3e7a4bdfd85f88866e19d2776746668a96821
Author: rfscholte <rf...@apache.org>
AuthorDate: Tue Apr 20 23:23:50 2021 +0200

    [MPLUGIN-348] Why does maven-plugin-plugin always warn if goalPrefix is set?
---
 .../maven/plugin/plugin/AbstractGeneratorMojo.java | 24 +++++++--
 .../plugin/plugin/AbstractGeneratorMojoTest.java   | 61 ++++++++++++++++++++++
 2 files changed, 81 insertions(+), 4 deletions(-)

diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
index 57ae51b..5de8cfc 100644
--- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
+++ b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
@@ -196,9 +196,10 @@ public abstract class AbstractGeneratorMojo
             return;
         }
 
-        if ( project.getArtifactId().toLowerCase().startsWith( "maven-" )
-            && project.getArtifactId().toLowerCase().endsWith( "-plugin" ) && !"org.apache.maven.plugins".equals(
-            project.getGroupId() ) )
+        if ( !"maven-plugin".equalsIgnoreCase( project.getArtifactId() )
+            && project.getArtifactId().toLowerCase().startsWith( "maven-" )
+            && project.getArtifactId().toLowerCase().endsWith( "-plugin" ) 
+            && !"org.apache.maven.plugins".equals( project.getGroupId() ) )
         {
             getLog().error( "\n\nArtifact Ids of the format maven-___-plugin are reserved for \n"
                                 + "plugins in the Group Id org.apache.maven.plugins\n"
@@ -206,7 +207,8 @@ public abstract class AbstractGeneratorMojo
                                 + "In the future this error will break the build.\n\n" );
         }
 
-        String defaultGoalPrefix = PluginDescriptor.getGoalPrefixFromArtifactId( project.getArtifactId() );
+        String defaultGoalPrefix = getDefaultGoalPrefix( project );
+          
         if ( goalPrefix == null )
         {
             goalPrefix = defaultGoalPrefix;
@@ -284,6 +286,20 @@ public abstract class AbstractGeneratorMojo
         }
     }
 
+    static String getDefaultGoalPrefix( MavenProject project )
+    {
+        String defaultGoalPrefix;
+        if ( "maven-plugin".equalsIgnoreCase( project.getArtifactId() ) )
+        {
+            defaultGoalPrefix = project.getGroupId().substring( project.getGroupId().lastIndexOf( '.' ) + 1 );
+        }
+        else
+        {
+            defaultGoalPrefix = PluginDescriptor.getGoalPrefixFromArtifactId( project.getArtifactId() );
+        }
+        return defaultGoalPrefix;
+    }
+
     /**
      * Get dependencies filtered with mojoDependencies configuration.
      * 
diff --git a/maven-plugin-plugin/src/test/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojoTest.java b/maven-plugin-plugin/src/test/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojoTest.java
new file mode 100644
index 0000000..d1e8c3b
--- /dev/null
+++ b/maven-plugin-plugin/src/test/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojoTest.java
@@ -0,0 +1,61 @@
+package org.apache.maven.plugin.plugin;
+
+/*
+ * 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.
+ */
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.CoreMatchers.is;
+
+import org.apache.maven.project.MavenProject;
+import org.junit.Test;
+
+public class AbstractGeneratorMojoTest
+{
+    @Test
+    public void defaultGoalPrefix()
+    {
+        assertThat( AbstractGeneratorMojo.getDefaultGoalPrefix( newProject( null, "maven-plugin-plugin" ) ),
+                    is( "plugin" ) );
+        assertThat( AbstractGeneratorMojo.getDefaultGoalPrefix( newProject( null, "maven-default-plugin" ) ),
+                    is( "default" ) );
+        assertThat( AbstractGeneratorMojo.getDefaultGoalPrefix( newProject( null, "default-maven-plugin" ) ),
+                    is( "default" ) );
+        assertThat( AbstractGeneratorMojo.getDefaultGoalPrefix( newProject( "foo.bar", "maven-plugin" ) ),
+                    is( "bar" ) );
+        assertThat( AbstractGeneratorMojo.getDefaultGoalPrefix( newProject( "foo", "maven-plugin" ) ), is( "foo" ) );
+    }
+    
+    private MavenProject newProject( final String groupId, final String artifactId )
+    {
+        return new MavenProject() {
+            @Override
+            public String getGroupId()
+            {
+                return groupId;
+            }
+            
+            @Override
+            public String getArtifactId()
+            {
+                return artifactId;
+            }
+        };
+    }
+
+}