o Restored support for IT execution using embedded Maven

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@830178 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Benjamin Bentmann 2009-10-27 13:32:56 +00:00
parent ae7f205ae0
commit fca0b52ab4
1 changed files with 54 additions and 10 deletions

View File

@ -79,6 +79,11 @@ public class MavenCli
public static final File DEFAULT_USER_TOOLCHAINS_FILE = new File( userMavenConfigurationHome, "toolchains.xml" ); public static final File DEFAULT_USER_TOOLCHAINS_FILE = new File( userMavenConfigurationHome, "toolchains.xml" );
private ClassWorld classWorld;
// Per-instance container supports fast embedded execution of core ITs
private DefaultPlexusContainer container;
private PrintStreamLogger logger; private PrintStreamLogger logger;
private ModelProcessor modelProcessor; private ModelProcessor modelProcessor;
@ -91,6 +96,17 @@ public class MavenCli
private DefaultSecDispatcher dispatcher; private DefaultSecDispatcher dispatcher;
public MavenCli()
{
this( null );
}
// This supports painless invocation by the Verifier during embedded execution of the core ITs
public MavenCli( ClassWorld classWorld )
{
this.classWorld = classWorld;
}
public static void main( String[] args ) public static void main( String[] args )
{ {
int result = main( args, null ); int result = main( args, null );
@ -112,6 +128,17 @@ public static int doMain( String[] args, ClassWorld classWorld )
return cli.doMain( new CliRequest( args, classWorld ) ); return cli.doMain( new CliRequest( args, classWorld ) );
} }
// This supports painless invocation by the Verifier during embedded execution of the core ITs
public int doMain( String[] args, String workingDirectory, PrintStream stdout, PrintStream stderr )
{
CliRequest cliRequest = new CliRequest( args, classWorld );
cliRequest.workingDirectory = workingDirectory;
cliRequest.stdout = stdout;
cliRequest.stderr = stderr;
return doMain( cliRequest );
}
// TODO: need to externalize CliRequest // TODO: need to externalize CliRequest
public int doMain( CliRequest cliRequest ) public int doMain( CliRequest cliRequest )
{ {
@ -158,7 +185,14 @@ private void initialize( CliRequest cliRequest )
cliRequest.stderr = System.err; cliRequest.stderr = System.err;
} }
if ( logger == null )
{
logger = new PrintStreamLogger( cliRequest.stdout ); logger = new PrintStreamLogger( cliRequest.stdout );
}
else
{
logger.setStream( cliRequest.stdout );
}
if ( cliRequest.workingDirectory == null ) if ( cliRequest.workingDirectory == null )
{ {
@ -295,11 +329,15 @@ private void container( CliRequest cliRequest )
cliRequest.classWorld = new ClassWorld( "plexus.core", Thread.currentThread().getContextClassLoader() ); cliRequest.classWorld = new ClassWorld( "plexus.core", Thread.currentThread().getContextClassLoader() );
} }
DefaultPlexusContainer container = this.container;
if ( container == null )
{
ContainerConfiguration cc = new DefaultContainerConfiguration() ContainerConfiguration cc = new DefaultContainerConfiguration()
.setClassWorld( cliRequest.classWorld ) .setClassWorld( cliRequest.classWorld )
.setName( "maven" ); .setName( "maven" );
DefaultPlexusContainer container = new DefaultPlexusContainer( cc ); container = new DefaultPlexusContainer( cc );
container.setLoggerManager( new MavenLoggerManager( logger ) ); container.setLoggerManager( new MavenLoggerManager( logger ) );
@ -307,6 +345,12 @@ private void container( CliRequest cliRequest )
customizeContainer( container ); customizeContainer( container );
if ( cliRequest.classWorld == classWorld )
{
this.container = container;
}
}
maven = container.lookup( Maven.class ); maven = container.lookup( Maven.class );
executionRequestPopulator = container.lookup( MavenExecutionRequestPopulator.class ); executionRequestPopulator = container.lookup( MavenExecutionRequestPopulator.class );