You are viewing a plain text version of this content. The canonical link for it is here.
Posted to m2-dev@maven.apache.org by br...@apache.org on 2005/03/16 00:31:23 UTC

cvs commit: maven-components/maven-core/src/main/java/org/apache/maven DefaultMaven.java Maven.java

brett       2005/03/15 15:31:23

  Modified:    maven-core/src/main/java/org/apache/maven/execution
                        DefaultMavenExecutionRequest.java
                        MavenExecutionRequest.java
               maven-core/src/main/java/org/apache/maven DefaultMaven.java
                        Maven.java
  Log:
  PR: MNG-191
  collect proejcts and modules first, then execute reactor
  
  Revision  Changes    Path
  1.2       +1 -6      maven-components/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
  
  Index: DefaultMavenExecutionRequest.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultMavenExecutionRequest.java	11 Mar 2005 01:06:47 -0000	1.1
  +++ DefaultMavenExecutionRequest.java	15 Mar 2005 23:31:23 -0000	1.2
  @@ -96,11 +96,6 @@
           return session;
       }
   
  -    public List getProjectFiles()
  -    {
  -        return files;
  -    }
  -
       public void setSession( MavenSession session )
       {
           this.session = session;
  
  
  
  1.11      +2 -4      maven-components/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
  
  Index: MavenExecutionRequest.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- MavenExecutionRequest.java	11 Mar 2005 01:06:47 -0000	1.10
  +++ MavenExecutionRequest.java	15 Mar 2005 23:31:23 -0000	1.11
  @@ -23,7 +23,6 @@
   import org.apache.maven.monitor.event.EventMonitor;
   import org.apache.maven.monitor.logging.Log;
   
  -import java.io.IOException;
   import java.util.List;
   
   /**
  @@ -40,8 +39,7 @@
   
       MavenSession getSession();
   
  -    List getProjectFiles()
  -        throws IOException;
  +    List getFiles();
   
       void setLog( Log log );
   
  
  
  
  1.30      +45 -53    maven-components/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
  
  Index: DefaultMaven.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/DefaultMaven.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- DefaultMaven.java	15 Mar 2005 21:41:04 -0000	1.29
  +++ DefaultMaven.java	15 Mar 2005 23:31:23 -0000	1.30
  @@ -20,11 +20,9 @@
   import org.apache.maven.artifact.manager.WagonManager;
   import org.apache.maven.artifact.repository.ArtifactRepository;
   import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
  -import org.apache.maven.execution.DefaultMavenExecutionRequest;
   import org.apache.maven.execution.MavenExecutionRequest;
   import org.apache.maven.execution.MavenExecutionResponse;
   import org.apache.maven.execution.MavenSession;
  -import org.apache.maven.lifecycle.GoalNotFoundException;
   import org.apache.maven.lifecycle.LifecycleExecutor;
   import org.apache.maven.model.Repository;
   import org.apache.maven.model.user.ProxyProfile;
  @@ -78,7 +76,7 @@
       protected LifecycleExecutor lifecycleExecutor;
   
       protected PlexusContainer container;
  -    
  +
       protected ArtifactRepositoryFactory artifactRepositoryFactory;
   
       // ----------------------------------------------------------------------
  @@ -86,7 +84,7 @@
       // ----------------------------------------------------------------------
   
       public MavenExecutionResponse execute( MavenExecutionRequest request )
  -        throws GoalNotFoundException, Exception
  +        throws ReactorException
       {
           EventDispatcher dispatcher = request.getEventDispatcher();
           String event = MavenEvents.REACTOR_EXECUTION;
  @@ -95,20 +93,11 @@
           dispatcher.dispatchStart( event, request.getBaseDirectory() );
           try
           {
  -            List projects = new ArrayList();
  +            List projects;
   
               try
               {
  -                List files = request.getProjectFiles();
  -
  -                for ( Iterator iterator = files.iterator(); iterator.hasNext(); )
  -                {
  -                    File file = (File) iterator.next();
  -
  -                    MavenProject project = getProject( file, request.getLocalRepository() );
  -
  -                    projects.add( project );
  -                }
  +                projects = collectProjects( request.getFiles(), request.getLocalRepository() );
   
                   projects = projectBuilder.getSortedProjects( projects );
   
  @@ -142,49 +131,21 @@
   
                   try
                   {
  -                    boolean isPom = "pom".equals( project.getPackaging() );
  -                    if ( isPom )
  +                    List goals;
  +                    if ( "pom".equals( project.getPackaging() ) )
                       {
                           // TODO: not required if discovered and cached
  -                        MavenExecutionResponse response = processProject( request, project, dispatcher,
  -                                                                          Collections.singletonList( "pom:install" ) );
  -                        if ( response.isExecutionFailure() )
  -                        {
  -                            return response;
  -                        }
  +                        goals = Collections.singletonList( "pom:install" );
                       }
  -
  -                    if ( project.getModules() != null && !project.getModules().isEmpty() )
  +                    else
                       {
  -                        String includes = StringUtils.join( project.getModules().iterator(), "/pom.xml," ) + "/pom.xml";
  -
  -                        File baseDir = project.getFile().getParentFile();
  -
  -                        MavenExecutionRequest reactorRequest = new DefaultMavenExecutionRequest(
  -                            request.getLocalRepository(),
  -                            request.getUserModel(),
  -                            request.getEventDispatcher(),
  -                            request.getGoals(),
  -                            FileUtils.getFiles( baseDir, includes, null ),
  -                            baseDir.getPath() );
  -
  -                        MavenExecutionResponse response = execute( reactorRequest );
  -
  -                        if ( response != null && response.isExecutionFailure() )
  -                        {
  -                            return response;
  -                        }
  +                        goals = request.getGoals();
                       }
   
  -                    if ( !isPom )
  +                    MavenExecutionResponse response = processProject( request, project, dispatcher, goals );
  +                    if ( response.isExecutionFailure() )
                       {
  -                        MavenExecutionResponse response = processProject( request, project, dispatcher,
  -                                                                          request.getGoals() );
  -
  -                        if ( response.isExecutionFailure() )
  -                        {
  -                            return response;
  -                        }
  +                        return response;
                       }
                   }
                   catch ( Exception e )
  @@ -206,6 +167,37 @@
           }
       }
   
  +    private List collectProjects( List files, ArtifactRepository localRepository )
  +        throws ProjectBuildingException, ReactorException, IOException
  +    {
  +        List projects = new ArrayList( files.size() );
  +
  +        for ( Iterator iterator = files.iterator(); iterator.hasNext(); )
  +        {
  +            File file = (File) iterator.next();
  +
  +            MavenProject project = getProject( file, localRepository );
  +
  +            if ( project.getModules() != null && !project.getModules().isEmpty() )
  +            {
  +                project.setPackaging( "pom" );
  +
  +                String includes = StringUtils.join( project.getModules().iterator(), "/pom.xml," ) + "/pom.xml";
  +
  +                if ( includes.indexOf( ".." ) >= 0 )
  +                {
  +                    throw new ReactorException( "Modules may not include '..'" );
  +                }
  +
  +                List moduleFiles = FileUtils.getFiles( project.getFile().getParentFile(), includes, null );
  +                projects.addAll( collectProjects( moduleFiles, localRepository ) );
  +            }
  +            projects.add( project );
  +        }
  +
  +        return projects;
  +    }
  +
       private MavenExecutionResponse processProject( MavenExecutionRequest request, MavenProject project,
                                                      EventDispatcher dispatcher, List goals )
           throws ComponentLookupException
  @@ -213,7 +205,7 @@
           MavenSession session = createSession( request );
   
           session.setProject( project );
  -        
  +
           session.setRemoteRepositories( getArtifactRepositories( project, request.getUserModel() ) );
   
           resolveParameters( request );
  
  
  
  1.13      +3 -3      maven-components/maven-core/src/main/java/org/apache/maven/Maven.java
  
  Index: Maven.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/Maven.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Maven.java	7 Mar 2005 19:03:19 -0000	1.12
  +++ Maven.java	15 Mar 2005 23:31:23 -0000	1.13
  @@ -18,7 +18,7 @@
   
   import org.apache.maven.execution.MavenExecutionRequest;
   import org.apache.maven.execution.MavenExecutionResponse;
  -import org.apache.maven.lifecycle.GoalNotFoundException;
  +import org.apache.maven.reactor.ReactorException;
   
   /**
    * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
  @@ -28,5 +28,5 @@
   {
       static String ROLE = Maven.class.getName();
   
  -    MavenExecutionResponse execute( MavenExecutionRequest request ) throws GoalNotFoundException, Exception;
  +    MavenExecutionResponse execute( MavenExecutionRequest request ) throws ReactorException;
   }
  \ No newline at end of file