o restore the functionality that m2eclipse needs to read projects with dependencies

git-svn-id: https://svn.apache.org/repos/asf/maven/components/branches/MNG-2766@772675 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jason van Zyl 2009-05-07 15:20:32 +00:00
parent fbe0e563d8
commit 838a1c19b0
1 changed files with 15 additions and 51 deletions

View File

@ -71,6 +71,7 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
* *
* @author Jason van Zyl * @author Jason van Zyl
*/ */
//TODO: just turn this into a component
public class MavenEmbedder public class MavenEmbedder
{ {
public static final String userHome = System.getProperty( "user.home" ); public static final String userHome = System.getProperty( "user.home" );
@ -303,6 +304,13 @@ public class MavenEmbedder
* can be populated. For example, a list of libraries that are used by an Eclipse, Netbeans, or * can be populated. For example, a list of libraries that are used by an Eclipse, Netbeans, or
* IntelliJ project. * IntelliJ project.
*/ */
// currently in m2eclipse each project is read read a single project for dependencies
// Project
// Exceptions
// explicit for exceptions where coordinate are involved.
// m2eclipse is not using the topological sorting at all because it keeps track itself.
public MavenExecutionResult readProjectWithDependencies( MavenExecutionRequest request ) public MavenExecutionResult readProjectWithDependencies( MavenExecutionRequest request )
{ {
MavenExecutionResult result = new DefaultMavenExecutionResult(); MavenExecutionResult result = new DefaultMavenExecutionResult();
@ -310,70 +318,26 @@ public class MavenEmbedder
try try
{ {
request = populator.populateDefaults( request, configuration ); request = populator.populateDefaults( request, configuration );
readProject( request.getPom(), request );
} }
catch ( MavenEmbedderException e ) catch ( MavenEmbedderException e )
{ {
return result.addException( e ); return result.addException( e );
} }
catch ( ProjectBuildingException e )
{
return result.addException( e );
}
catch ( MissingModuleException e )
{
return result.addException( e );
}
//TODO: need to check for circularity problems here even though this is purely downloading and for IDEs they will take care of circularity problems.
/*
ReactorManager reactorManager = maven.createReactorManager( request, result );
if ( result.hasExceptions() )
{
return result;
}
*/
MavenProjectBuildingResult projectBuildingResult;
try try
{ {
projectBuildingResult = mavenProjectBuilder.buildProjectWithDependencies( request.getPom(), request.getProjectBuildingConfiguration() ); MavenProjectBuildingResult projectBuildingResult = mavenProjectBuilder.buildProjectWithDependencies( request.getPom(), request.getProjectBuildingConfiguration() );
result.setProject( projectBuildingResult.getProject() );
result.setArtifactResolutionResult( projectBuildingResult.getArtifactResolutionResult() );
return result;
} }
catch ( ProjectBuildingException e ) catch ( ProjectBuildingException e )
{ {
return result.addException( e ); return result.addException( e );
} }
/*
if ( reactorManager.hasMultipleProjects() )
{
result.setProject( projectBuildingResult.getProject() );
result.setTopologicallySortedProjects( reactorManager.getSortedProjects() );
}
else
{
result.setProject( projectBuildingResult.getProject() );
result.setTopologicallySortedProjects( Arrays.asList( new MavenProject[]{ projectBuildingResult.getProject()} ) );
}
*/
result.setArtifactResolutionResult( projectBuildingResult.getArtifactResolutionResult() );
// From this I could produce something that would help IDE integrators create importers:
// - topo sorted list of projects
// - binary dependencies
// - source dependencies (projects in the reactor)
//
// We could create a layer approach here. As to do anything you must resolve a projects artifacts,
// and with that set you could then subsequently execute goals for each of those project.
return result;
} }
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------