[MNG-5206] plexus container never disposed

Submitted by Stuart McCulloch.

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1211692 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Olivier Lamy 2011-12-07 22:55:08 +00:00
parent 65507bcfde
commit 50b6e3b621
1 changed files with 9 additions and 2 deletions

View File

@ -180,6 +180,7 @@ public int doMain( String[] args, String workingDirectory, PrintStream stdout, P
// TODO: need to externalize CliRequest
public int doMain( CliRequest cliRequest )
{
PlexusContainer localContainer = this.container;
try
{
initialize( cliRequest );
@ -188,7 +189,7 @@ public int doMain( CliRequest cliRequest )
logging( cliRequest );
version( cliRequest );
properties( cliRequest );
container( cliRequest );
localContainer = container( cliRequest );
commands( cliRequest );
settings( cliRequest );
populateRequest( cliRequest );
@ -218,6 +219,10 @@ public int doMain( CliRequest cliRequest )
}
finally
{
if ( localContainer != this.container )
{
localContainer.dispose();
}
if ( cliRequest.fileStream != null )
{
cliRequest.fileStream.close();
@ -353,7 +358,7 @@ private void properties( CliRequest cliRequest )
populateProperties( cliRequest.commandLine, cliRequest.systemProperties, cliRequest.userProperties );
}
private void container( CliRequest cliRequest )
private PlexusContainer container( CliRequest cliRequest )
throws Exception
{
if ( cliRequest.classWorld == null )
@ -414,6 +419,8 @@ private void container( CliRequest cliRequest )
settingsBuilder = container.lookup( SettingsBuilder.class );
dispatcher = (DefaultSecDispatcher) container.lookup( SecDispatcher.class, "maven" );
return container;
}
private PrintStreamLogger setupLogger( CliRequest cliRequest )