convert #component expressions to <requirements/>

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163942 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2005-04-14 03:27:35 +00:00
parent f0e391dba7
commit 378cc229a3
8 changed files with 87 additions and 75 deletions

View File

@ -392,14 +392,18 @@ public void executeMojo( MavenSession session, String goalName )
configuration = new XmlPlexusConfiguration( dom );
}
Map map = getPluginConfigurationFromExpressions( mojoDescriptor, configuration, session );
if ( newMojoTechnique )
{
Map map = getPluginConfigurationFromExpressions( mojoDescriptor, configuration, session );
populatePluginFields( plugin, configuration, map );
}
else
{
getLogger().warn( "WARNING: The mojo " + mojoDescriptor.getId() + " is using the OLD API" );
Map map = getPluginConfigurationFromExpressions( mojoDescriptor, configuration, session );
request = createPluginRequest( configuration, map );
}
@ -684,12 +688,11 @@ public void contextualize( Context context )
public void initialize()
{
// TODO: configure this from bootstrap or scan lib
artifactFilter = new ExclusionSetFilter( new String[]{"maven-core", "maven-artifact", "maven-model",
"maven-settings", "maven-monitor", "maven-plugin-api",
"maven-plugin-descriptor", "plexus-container-default",
"plexus-artifact-container", "wagon-provider-api",
"classworlds",
"maven-plugin" /* Just re-added until all plugins are switched over...*/} );
artifactFilter =
new ExclusionSetFilter(
new String[]{"maven-core", "maven-artifact", "maven-model", "maven-settings", "maven-monitor",
"maven-plugin-api", "maven-plugin-descriptor", "plexus-container-default",
"plexus-artifact-container", "wagon-provider-api", "classworlds", "maven-plugin" /* Just re-added until all plugins are switched over...*/} );
}
// ----------------------------------------------------------------------

View File

@ -51,11 +51,6 @@ public String getImplementation()
return mojoDescriptor.getImplementation();
}
public List getPrereqs()
{
return mojoDescriptor.getPrereqs();
}
public String getComponentFactory()
{
return mojoDescriptor.getLanguage();
@ -75,4 +70,9 @@ public String getComponentType()
{
return DefaultPluginManager.MAVEN_PLUGIN;
}
public List getRequirements()
{
return mojoDescriptor.getRequirements();
}
}

View File

@ -40,6 +40,9 @@ public static Object evaluate( String expression, MavenSession context )
}
if ( expression.startsWith( "#component" ) )
{
context.getLog().warn( "WARNING: plugin is using deprecated expression " + expression );
// TODO: deprecated... and can remove the lookup method in context afterwards
String role = expression.substring( 11 );
try

View File

@ -16,11 +16,19 @@
* limitations under the License.
*/
import org.codehaus.plexus.component.repository.ComponentRequirement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* The bean containing the mojo descriptor.
*
* @todo is there a need for the delegation of MavenMojoDescriptor to this? Why not just extend ComponentDescriptor here?
*/
public class MojoDescriptor
implements Cloneable
{
@ -48,12 +56,12 @@ public class MojoDescriptor
private String phase;
private List requirements;
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
private List prereqs;
private String requiresDependencyResolution = null;
private boolean requiresProject = true;
@ -64,11 +72,6 @@ public class MojoDescriptor
//
// ----------------------------------------------------------------------
public String getRole()
{
return "org.apache.maven.plugin.Plugin";
}
public String getImplementation()
{
return implementation;
@ -169,29 +172,25 @@ public void setRequiresProject( boolean requiresProject )
this.requiresProject = requiresProject;
}
public boolean requiresProject()
public boolean isRequiresProject()
{
return requiresProject;
}
// ----------------------------------------------------------------------
// Prereqs
// ----------------------------------------------------------------------
public List getPrereqs()
public void setRequirements( List requirements )
{
return prereqs;
this.requirements = requirements;
}
public void setPrereqs( List prereqs )
public List getRequirements()
{
this.prereqs = prereqs;
if ( requirements == null )
{
requirements = new ArrayList();
}
return requirements;
}
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
public String getPhase()
{
return phase;
@ -226,4 +225,9 @@ public void setExecutionStrategy( String executionStrategy )
{
this.executionStrategy = executionStrategy;
}
public void addRequirement( ComponentRequirement cr )
{
getRequirements().add( cr );
}
}

View File

@ -1,5 +1,6 @@
package org.apache.maven.plugin.descriptor;
import org.codehaus.plexus.component.repository.ComponentRequirement;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.configuration.PlexusConfigurationException;
import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
@ -155,23 +156,29 @@ public MojoDescriptor buildComponentDescriptor( PlexusConfiguration c )
mojo.setParameters( parameters );
// TODO: this should not need to be handed off...
// ----------------------------------------------------------------------
// Prereqs
// Requirements
// ----------------------------------------------------------------------
PlexusConfiguration[] prereqConfigurations = c.getChild( "prereqs" ).getChildren( "prereq" );
PlexusConfiguration[] requirements = c.getChild( "requirements" ).getChildren( "requirement" );
List prereqs = new ArrayList();
for ( int i = 0; i < prereqConfigurations.length; i++ )
for ( int i = 0; i < requirements.length; i++ )
{
PlexusConfiguration d = prereqConfigurations[i];
PlexusConfiguration requirement = requirements[i];
prereqs.add( d.getValue() );
ComponentRequirement cr = new ComponentRequirement();
cr.setRole( requirement.getChild( "role" ).getValue() );
cr.setRoleHint( requirement.getChild( "role-hint" ).getValue() );
cr.setFieldName( requirement.getChild( "field-name" ).getValue() );
mojo.addRequirement( cr );
}
mojo.setPrereqs( prereqs );
return mojo;
}

View File

@ -25,6 +25,8 @@
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@ -159,6 +161,7 @@ protected void processPluginDescriptor( MojoDescriptor mojoDescriptor, XMLWriter
w.startElement( "parameters" );
Collection requirements = new ArrayList();
for ( int j = 0; j < parameters.size(); j++ )
{
Parameter parameter = (Parameter) parameters.get( j );
@ -169,11 +172,18 @@ protected void processPluginDescriptor( MojoDescriptor mojoDescriptor, XMLWriter
element( w, "type", parameter.getType() );
element( w, "required", Boolean.toString( parameter.isRequired() ) );
element( w, "validator", parameter.getValidator() );
element( w, "expression", parameter.getExpression() );
if ( parameter.getExpression().startsWith( "#component" ) )
{
requirements.add( parameter );
}
else
{
element( w, "required", Boolean.toString( parameter.isRequired() ) );
element( w, "expression", parameter.getExpression() );
}
element( w, "description", parameter.getDescription() );
@ -185,20 +195,24 @@ protected void processPluginDescriptor( MojoDescriptor mojoDescriptor, XMLWriter
w.endElement();
// ----------------------------------------------------------------------
// Prereqs
// Requirements
// ----------------------------------------------------------------------
// TODO: remove
List prereqs = mojoDescriptor.getPrereqs();
if ( prereqs != null && prereqs.size() > 0 )
if ( !requirements.isEmpty() )
{
w.startElement( "prereqs" );
w.startElement( "requirements" );
for ( int j = 0; j < prereqs.size(); j++ )
for ( Iterator i = requirements.iterator(); i.hasNext(); )
{
element( w, "prereq", (String) prereqs.get( j ) );
Parameter requirement = (Parameter) i.next();
w.startElement( "requirement" );
element( w, "role", requirement.getExpression().substring( 11 ) );
element( w, "field-name", requirement.getName() );
w.endElement();
}
w.endElement();

View File

@ -214,27 +214,6 @@ private void writeGoals( MojoDescriptor mojoDescriptor, XMLWriter w )
w.addAttribute( "name", id + ":" + mojoDescriptor.getGoal() );
List goalPrereqs = mojoDescriptor.getPrereqs();
if ( goalPrereqs.size() > 0 )
{
StringBuffer prereqs = new StringBuffer();
for ( int j = 0; j < goalPrereqs.size(); j++ )
{
String prereq = (String) goalPrereqs.get( j );
prereqs.append( prereq );
if ( j < goalPrereqs.size() - 1 )
{
prereqs.append( "," );
}
}
w.addAttribute( "prereqs", prereqs.toString() );
}
if ( mojoDescriptor.getDescription() != null )
{
w.addAttribute( "description", mojoDescriptor.getDescription() );

View File

@ -103,6 +103,8 @@ private MojoDescriptor buildDescriptor( MarmaladeExecutionContext context )
descriptor.setRequiresDependencyResolution( requiresDependencyResolution );
descriptor.setRequiresProject( requiresProject );
// TODO: component requirements
String basePath = (String) context.getVariable( MarmaladeMojoExecutionDirectives.SCRIPT_BASEPATH_INVAR,
getExpressionEvaluator() );