jvanzyl     2002/07/16 15:03:10

  Modified:    src/java/org/apache/maven/app Maven.java PluginManager.java
  Log:
  o Maven.java now uses MavenUtils and the Descriptor*
  o Plugin manager tries to set the jelly context/thread context classloader
    so that plugins have access to basic maven resources so they don't
    have to declare them again if they are only runtime requirements.
  
  Revision  Changes    Path
  1.70      +16 -18    jakarta-turbine-maven/src/java/org/apache/maven/app/Maven.java
  
  Index: Maven.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/app/Maven.java,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- Maven.java        16 Jul 2002 08:01:34 -0000      1.69
  +++ Maven.java        16 Jul 2002 22:03:10 -0000      1.70
  @@ -57,9 +57,8 @@
    */
   
   import org.apache.maven.ProjectVerifier;
  -import org.apache.maven.build.DescriptorException;
  -import org.apache.maven.build.ProjectDescriptor;
   import org.apache.maven.project.Project;
  +import org.apache.maven.MavenUtils;
   import org.apache.maven.jelly.tags.project.MavenTagLibrary;
   
   import org.apache.commons.cli.CommandLine;
  @@ -178,8 +177,8 @@
       /** Aggregate properties. */
       private Properties properties;
   
  -    /** Maven project descriptor. */
  -    private ProjectDescriptor projectDescriptor;
  +    /** Maven project. */
  +    private Project project;
   
       /** Jelly conext. */
       private MavenJellyContext jellyContext;
  @@ -295,13 +294,13 @@
           return (this.projectBuildFile != null);
       }
   
  -    /** Retrieve the maven <code>ProjectDescriptor</code>.
  +    /** Retrieve the maven <code>project</code>.
        *
        *  @return The project descriptor.
        */
  -    private ProjectDescriptor getProjectDescriptor()
  +    private Project getProject()
       {
  -        return this.projectDescriptor;
  +        return this.project;
       }
   
       /** Retrieve the Ant project.
  @@ -496,7 +495,7 @@
        *          descriptor from a file
        */
       public void initializeCore(String[] args) throws 
  -        ParseException, IOException, MalformedURLException, DescriptorException
  +        ParseException, IOException, MalformedURLException,Exception
       {
   
           setMavenHome(new File(System.getProperty("maven.home")));
  @@ -507,7 +506,7 @@
   
           loadProperties();
   
  -        initializeProjectDescriptor();
  +        initializeProject();
   
           initializeAnt();
           initializeIO();
  @@ -522,10 +521,10 @@
        *  @throws DescriptorException If there is an error while
        *          reading the project descriptor.
        */
  -    private void initializeProjectDescriptor()
  -        throws DescriptorException
  +    private void initializeProject()
  +        throws Exception
       {
  -        this.projectDescriptor = new ProjectDescriptor(getProjectFile());
  +        this.project = MavenUtils.getProject(getProjectFile());
       }
   
       /** Initialize Jelly.
  @@ -668,8 +667,7 @@
        */
       private void initializeDriver() throws Exception
       {
  -        getJellyContext().setVariable("pom",
  -                                       getProjectDescriptor().getProject());
  +        getJellyContext().setVariable("pom", getProject());
   
           File driver = getDriverFile();
   
  @@ -1383,7 +1381,7 @@
   
           projectVerifier.setMavenRemoteRepo(remoteRepoProp);
           projectVerifier.setMavenLocalRepo(localRepoProp);
  -        projectVerifier.setMavenProject(getProjectDescriptor().getProject());
  +        projectVerifier.setMavenProject(getProject());
           projectVerifier.setProject(getAntProject());
           String proxyHost = getProperty("maven.proxy.host");
           if (proxyHost != null)
  @@ -1403,7 +1401,7 @@
        */
       public void verifyProject() throws Exception
       {
  -        getProjectVerifier().setMavenProject(getProjectDescriptor().getProject());
  +        getProjectVerifier().setMavenProject(getProject());
           getProjectVerifier().doExecute();
       }
   
  @@ -1456,7 +1454,7 @@
               System.err.println(e.getLocalizedMessage());
               done = true;
           }
  -        catch (DescriptorException e)
  +        catch (Exception e)
           {
               System.err.println(e.getLocalizedMessage());
               done = true;
  @@ -1477,7 +1475,7 @@
   
           Date buildStart = new Date();
   
  -        Project mavenProject = getProjectDescriptor().getProject();
  +        Project mavenProject = getProject();
   
           printConsoleMavenHeader();
           System.out.println();
  
  
  
  1.14      +12 -2     
jakarta-turbine-maven/src/java/org/apache/maven/app/PluginManager.java
  
  Index: PluginManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-maven/src/java/org/apache/maven/app/PluginManager.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- PluginManager.java        16 Jul 2002 16:18:41 -0000      1.13
  +++ PluginManager.java        16 Jul 2002 22:03:10 -0000      1.14
  @@ -171,7 +171,7 @@
                   Expand unzipper = new Expand();
                   unzipper.setSrc(files[i]);
                   String directory = files[i].getName();
  -                directory = directory.substring(0, directory.indexOf(".jar")-1);
  +                directory = directory.substring(0, directory.indexOf(".jar"));
                   File unzipDir = new File(getPluginsDir(), directory);
                   unzipper.setDest(unzipDir);
                   unzipper.execute();
  @@ -212,11 +212,13 @@
           loadPluginProperties(name);
   
           log.debug("plugin: " + name + " -> " + getPluginDir(name));
  +        
           
Forehead.getInstance().getClassLoader("root.maven").addURL(getPluginDir(name).toURL());
           
           // Retrieve the dependencies that this plugin requires.
           Project pluginProject = MavenUtils.getProject(new 
File(getPluginDir(name),"project.xml"));
           getProjectVerifier().setMavenProject(pluginProject);
  +        getProjectVerifier().clearFailedDependencies();
           getProjectVerifier().doExecute();
           
           log.debug("Loading plugin dependencies:");
  @@ -261,11 +263,19 @@
           MavenJellyContext pluginJellyContext = new 
MavenJellyContext(getJellyContext());
           pluginJellyContext.setInherit(true);
           pluginJellyContext.setVariable("plugin.dir", getPluginDir(name));
  -
  +        
  +        // Now we want to make available to the plugins the [root.maven]
  +        // classloader for convenience.
  +        
getJellyContext().setClassLoader(Forehead.getInstance().getClassLoader("root.maven"));
  +        ClassLoader currentCL = Thread.currentThread().getContextClassLoader();
  +        
Thread.currentThread().setContextClassLoader(Forehead.getInstance().getClassLoader("root.maven"));
  +        
           JellyUtils.runScript(pluginScript,
               getPluginDir(name).toURL(),
               pluginJellyContext,
               getXMLOutput());
  +    
  +        Thread.currentThread().setContextClassLoader(currentCL);
       }
   
       /**
  
  
  

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

Reply via email to