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