You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/05/27 05:27:59 UTC

svn commit: r178733 - /maven/components/trunk/maven-core/src/main/java/org/apache/maven/project /maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/inheritance /maven/components/trunk/maven-model /maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor /maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator /maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/injection

Author: jdcasey
Date: Thu May 26 20:27:55 2005
New Revision: 178733

URL: http://svn.apache.org/viewcvs?rev=178733&view=rev
Log:
o Added inherited field to the Plugin and Goal classes in maven.mdo
o Added annotation inheritedByDefault (looks like: @inheritedByDefault true|false) for java mojos
o Added support for inheritedByDefault to MojoDescriptor, descriptor generator and builder
o Factored the plugin combinatorial logic into ModelUtils in o.a.m.project, for later reuse in a plugin-aware model inheritance builder
o Refactored the DefaultModelDefaultsInjector to use the new ModelUtils for plugin merging (this is factored into a utility for reuse in inheritance assembly)

Added:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/inheritance/
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/inheritance/PluginAwareModelInheritanceAssembler.java   (with props)
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java   (with props)
Modified:
    maven/components/trunk/maven-model/maven.mdo
    maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
    maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
    maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
    maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/injection/DefaultModelDefaultsInjector.java

Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/inheritance/PluginAwareModelInheritanceAssembler.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/inheritance/PluginAwareModelInheritanceAssembler.java?rev=178733&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/inheritance/PluginAwareModelInheritanceAssembler.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/inheritance/PluginAwareModelInheritanceAssembler.java Thu May 26 20:27:55 2005
@@ -0,0 +1,74 @@
+package org.apache.maven.project.inheritance;
+
+import org.apache.maven.model.Build;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.project.ModelUtils;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+public class PluginAwareModelInheritanceAssembler
+    extends DefaultModelInheritanceAssembler
+{
+    
+//    private PluginManager pluginManager;
+//
+//    public void assembleModelInheritance( Model child, Model parent )
+//    {
+//        super.assembleModelInheritance( child, parent );
+//        
+//        Build parentBuild = parent.getBuild();
+//        Build childBuild = child.getBuild();
+//        
+//        if(parentBuild != null)
+//        {
+//            List parentPlugins = parentBuild.getPlugins();
+//            
+//            if( childBuild == null )
+//            {
+//                childBuild = new Build();
+//                child.setBuild(childBuild);
+//            }
+//            
+//            Map childPluginMap = childBuild.getPluginsAsMap();
+//            
+//            for ( Iterator it = parentPlugins.iterator(); it.hasNext(); )
+//            {
+//                Plugin parentPlugin = (Plugin) it.next();
+//                
+//                String inherited = parentPlugin.getInherited();
+//                
+//                if( inherited != null )
+//                {
+//                    
+//                }
+//                else
+//                {
+//                    // determine from the plugin descriptor what the default behavior is...
+//                    PluginDescriptor pluginDescriptor = pluginManager.verifyPlugin(parentPlugin.getGroupId(), parentPlugin.getArtifactId(), parentPlugin.getVersion(), session);
+//                }
+//            }
+//            ModelUtils.mergeSupplementalPluginDefinition( plugin, def );
+//        }
+//    }
+
+}

Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/inheritance/PluginAwareModelInheritanceAssembler.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author"

Modified: maven/components/trunk/maven-model/maven.mdo
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-model/maven.mdo?rev=178733&r1=178732&r2=178733&view=diff
==============================================================================
--- maven/components/trunk/maven-model/maven.mdo (original)
+++ maven/components/trunk/maven-model/maven.mdo Thu May 26 20:27:55 2005
@@ -2022,6 +2022,12 @@
           <type>String</type>
         </field>
         <field>
+          <name>inherited</name>
+          <version>4.0.0</version>
+          <description><![CDATA[Whether this plugin configuration should be propagated to child POMs.]]></description>
+          <type>String</type>
+        </field>
+        <field>
           <name>configuration</name>
           <type>DOM</type>
         </field>
@@ -2077,6 +2083,12 @@
         <field>
           <name>id</name>
           <version>4.0.0</version>
+          <type>String</type>
+        </field>
+        <field>
+          <name>inherited</name>
+          <version>4.0.0</version>
+          <description><![CDATA[Whether this goal configuration should be propagated to child POMs.]]></description>
           <type>String</type>
         </field>
         <field>

Modified: maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java?rev=178733&r1=178732&r2=178733&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java (original)
+++ maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java Thu May 26 20:27:55 2005
@@ -60,7 +60,7 @@
     private String executePhase;
 
     private String deprecated;
-
+    
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------
@@ -75,6 +75,8 @@
 
     private PluginDescriptor pluginDescriptor;
 
+    private boolean inheritedByDefault = false;
+
     public MojoDescriptor()
     {
         setInstantiationStrategy( DEFAULT_INSTANTIATION_STRATEGY );
@@ -299,5 +301,15 @@
     public void setPluginDescriptor( PluginDescriptor pluginDescriptor )
     {
         this.pluginDescriptor = pluginDescriptor;
+    }
+
+    public boolean isInheritedByDefault()
+    {
+        return inheritedByDefault;
+    }
+
+    public void setInheritedByDefault( boolean inheritedByDefault )
+    {
+        this.inheritedByDefault = inheritedByDefault;
     }
 }

Modified: maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java?rev=178733&r1=178732&r2=178733&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java (original)
+++ maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java Thu May 26 20:27:55 2005
@@ -153,6 +153,13 @@
             mojo.setOnlineRequired( Boolean.valueOf( requiresOnline ).booleanValue() );
         }
 
+        String inheritedByDefault = c.getChild( "inheritedByDefault" ).getValue();
+
+        if ( inheritedByDefault != null )
+        {
+            mojo.setInheritedByDefault( Boolean.valueOf( inheritedByDefault ).booleanValue() );
+        }
+
         // ----------------------------------------------------------------------
         // Parameters
         // ----------------------------------------------------------------------

Modified: maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java?rev=178733&r1=178732&r2=178733&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java (original)
+++ maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java Thu May 26 20:27:55 2005
@@ -131,6 +131,12 @@
         //
         // ----------------------------------------------------------------------
 
+        element( w, "inheritedByDefault", "" + mojoDescriptor.isInheritedByDefault() );
+
+        // ----------------------------------------------------------------------
+        //
+        // ----------------------------------------------------------------------
+
         if ( mojoDescriptor.getPhase() != null )
         {
             element( w, "phase", mojoDescriptor.getPhase() );

Modified: maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java?rev=178733&r1=178732&r2=178733&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java (original)
+++ maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java Thu May 26 20:27:55 2005
@@ -75,6 +75,8 @@
     public static final String GOAL_REQUIRES_PROJECT = "requiresProject";
 
     public static final String GOAL_REQUIRES_ONLINE = "requiresOnline";
+    
+    public static final String GOAL_INHERIT_BY_DEFAULT = "inheritByDefault";
 
     public static final String GOAL_MULTI_EXECUTION_STRATEGY = "attainAlways";
 
@@ -210,6 +212,17 @@
         if ( requiresOnline != null )
         {
             mojoDescriptor.setOnlineRequired( true );
+        }
+
+        // ----------------------------------------------------------------------
+        // inheritByDefault flag
+        // ----------------------------------------------------------------------
+
+        DocletTag inheritByDefault = findInClassHierarchy( javaClass, GOAL_INHERIT_BY_DEFAULT );
+
+        if ( inheritByDefault != null )
+        {
+            mojoDescriptor.setInheritedByDefault( Boolean.valueOf( inheritByDefault.getValue() ).booleanValue() );
         }
 
         extractParameters( mojoDescriptor, javaClass );

Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java?rev=178733&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java (added)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java Thu May 26 20:27:55 2005
@@ -0,0 +1,69 @@
+package org.apache.maven.project;
+
+import org.apache.maven.model.Goal;
+import org.apache.maven.model.Plugin;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+public final class ModelUtils
+{
+    
+    public static void mergeSupplementalPluginDefinition( Plugin main, Plugin supplemental )
+    {
+        if ( main.getVersion() == null && supplemental.getVersion() != null )
+        {
+            main.setVersion( supplemental.getVersion() );
+        }
+
+        Map supplementalGoals = supplemental.getGoalsAsMap();
+
+        List pluginGoals = main.getGoals();
+
+        if ( pluginGoals != null )
+        {
+            for ( Iterator it = pluginGoals.iterator(); it.hasNext(); )
+            {
+                Goal pluginGoal = (Goal) it.next();
+
+                Goal supplementalGoal = (Goal) supplementalGoals.get( pluginGoal.getId() );
+
+                if ( supplementalGoal != null )
+                {
+                    Xpp3Dom pluginGoalConfig = (Xpp3Dom) pluginGoal.getConfiguration();
+                    Xpp3Dom supplementalGoalConfig = (Xpp3Dom) supplementalGoal.getConfiguration();
+
+                    pluginGoalConfig = Xpp3Dom.mergeXpp3Dom( pluginGoalConfig, supplementalGoalConfig );
+
+                    pluginGoal.setConfiguration( pluginGoalConfig );
+                }
+            }
+        }
+
+        Xpp3Dom pluginConfiguration = (Xpp3Dom) main.getConfiguration();
+        Xpp3Dom supplementalConfiguration = (Xpp3Dom) supplemental.getConfiguration();
+
+        pluginConfiguration = Xpp3Dom.mergeXpp3Dom( pluginConfiguration, supplementalConfiguration );
+
+        main.setConfiguration( pluginConfiguration );
+    }
+
+}

Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author"

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/injection/DefaultModelDefaultsInjector.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/injection/DefaultModelDefaultsInjector.java?rev=178733&r1=178732&r2=178733&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/injection/DefaultModelDefaultsInjector.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/injection/DefaultModelDefaultsInjector.java Thu May 26 20:27:55 2005
@@ -22,6 +22,7 @@
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginManagement;
+import org.apache.maven.project.ModelUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.util.Iterator;
@@ -72,41 +73,7 @@
 
     public void mergePluginWithDefaults( Plugin plugin, Plugin def )
     {
-        if ( plugin.getVersion() == null && def.getVersion() != null )
-        {
-            plugin.setVersion( def.getVersion() );
-        }
-
-        Map defaultGoals = def.getGoalsAsMap();
-
-        List pluginGoals = plugin.getGoals();
-
-        if ( pluginGoals != null )
-        {
-            for ( Iterator it = pluginGoals.iterator(); it.hasNext(); )
-            {
-                Goal pluginGoal = (Goal) it.next();
-
-                Goal defaultGoal = (Goal) defaultGoals.get( pluginGoal.getId() );
-
-                if ( defaultGoal != null )
-                {
-                    Xpp3Dom pluginGoalConfig = (Xpp3Dom) pluginGoal.getConfiguration();
-                    Xpp3Dom defaultGoalConfig = (Xpp3Dom) defaultGoal.getConfiguration();
-
-                    pluginGoalConfig = Xpp3Dom.mergeXpp3Dom( pluginGoalConfig, defaultGoalConfig );
-
-                    pluginGoal.setConfiguration( pluginGoalConfig );
-                }
-            }
-        }
-
-        Xpp3Dom pluginConfiguration = (Xpp3Dom) plugin.getConfiguration();
-        Xpp3Dom defaultConfiguration = (Xpp3Dom) def.getConfiguration();
-
-        pluginConfiguration = Xpp3Dom.mergeXpp3Dom( pluginConfiguration, defaultConfiguration );
-
-        plugin.setConfiguration( pluginConfiguration );
+        ModelUtils.mergeSupplementalPluginDefinition( plugin, def );
     }
 
     private void injectDependencyDefaults( List dependencies, DependencyManagement dependencyManagement )



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org