brett       2004/11/06 01:11:37

  Modified:    src/java/org/apache/maven/plugin Tag: MAVEN-1_0-BRANCH
                        PluginManager.java
  Log:
  PR: MAVEN-1467

  Properly initialise plugin properties, so maven:set will work even before goal 
attainment.

  This is ugly, but the correction requires a break in backwards compatibility. We may 
be able to achieve this in 1.1
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.70.4.59 +25 -4     maven/src/java/org/apache/maven/plugin/PluginManager.java
  
  Index: PluginManager.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/plugin/PluginManager.java,v
  retrieving revision 1.70.4.58
  retrieving revision 1.70.4.59
  diff -u -r1.70.4.58 -r1.70.4.59
  --- PluginManager.java        6 Nov 2004 07:52:47 -0000       1.70.4.58
  +++ PluginManager.java        6 Nov 2004 09:11:37 -0000       1.70.4.59
  @@ -56,6 +56,7 @@
   import java.util.Iterator;
   import java.util.List;
   import java.util.Map;
  +import java.util.Properties;
   import java.util.Set;
   
   /*
  @@ -727,12 +728,32 @@
           Project project = housing.getProject();
   
           // TODO: I think this should merge into pluginContext, but that seems to 
break existing jelly as it depends on
  -        // that kind of warped scoping
  -        MavenUtils.integrateMapInContext( housing.getPluginProperties(), 
baseContext );
  +        // that kind of warped scoping. Fix this in 1.1
  +//        MavenUtils.integrateMapInContext( housing.getPluginProperties(), 
baseContext );
  +
  +        // Instead, we must go through each property and merge from previous plugin 
contexts, or the original property
  +        // first integrate new ones
  +        MavenUtils.integrateMapInContext( project.getContext().getVariables(), 
baseContext );
  +        // now integrate properties that have a new value
  +        Properties p = new Properties();
  +        for ( Iterator i = housing.getPluginProperties().keySet().iterator(); 
i.hasNext(); )
  +        {
  +            String key = (String) i.next();
  +            Object value = project.getContext().getVariable( key );
  +            if ( value != null )
  +            {
  +                baseContext.setVariable( key, value );
  +            }
  +            else
  +            {
  +                p.setProperty( key, (String) housing.getPluginProperties().get( key 
) );
  +            }
  +        }
  +        MavenUtils.integrateMapInContext( p, baseContext );
  +        // but leave alone anything in there that is not a plugin property, and 
already exists in baseContext
   
           // TODO necessary to create a new one every time?
           MavenJellyContext pluginContext = new MavenJellyContext( baseContext );
  -        //MavenUtils.integrateMapInContext( project.getContext().getVariables(), 
pluginContext );
           project.pushContext( pluginContext );
           pluginContext.setInherit( true );
           pluginContext.setVariable( "context", pluginContext );
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to