Author: bentmann
Date: Tue Nov 9 13:09:51 2010
New Revision: 1032976
URL: http://svn.apache.org/viewvc?rev=1032976&view=rev
Log:
[MNG-4892] Use of --log-file doesn't capture all output, e.g. from
maven-antrun-plugin
Modified:
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PrintStreamLogger.java
Modified:
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
URL:
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java?rev=1032976&r1=1032975&r2=1032976&view=diff
==============================================================================
---
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
(original)
+++
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
Tue Nov 9 13:09:51 2010
@@ -164,8 +164,7 @@ public final class CLIReportingUtils
InputStream resourceAsStream = null;
try
{
- resourceAsStream =
- MavenCli.class.getClassLoader().getResourceAsStream(
"org/apache/maven/messages/build.properties" );
+ resourceAsStream = MavenCli.class.getResourceAsStream(
"/org/apache/maven/messages/build.properties" );
if ( resourceAsStream != null )
{
@@ -184,8 +183,13 @@ public final class CLIReportingUtils
return properties;
}
- public static void showError( Logger logger, String message, Exception e,
boolean showStackTrace )
+ public static void showError( Logger logger, String message, Throwable e,
boolean showStackTrace )
{
+ if ( logger == null )
+ {
+ logger = new PrintStreamLogger( System.out );
+ }
+
if ( showStackTrace )
{
logger.error( message, e );
Modified:
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
URL:
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java?rev=1032976&r1=1032975&r2=1032976&view=diff
==============================================================================
---
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
(original)
+++
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
Tue Nov 9 13:09:51 2010
@@ -39,6 +39,7 @@ import org.apache.maven.exception.Defaul
import org.apache.maven.exception.ExceptionHandler;
import org.apache.maven.exception.ExceptionSummary;
import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.ExecutionListener;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionRequestPopulator;
import org.apache.maven.execution.MavenExecutionResult;
@@ -52,12 +53,14 @@ import org.apache.maven.settings.buildin
import org.apache.maven.settings.building.SettingsBuildingRequest;
import org.apache.maven.settings.building.SettingsBuildingResult;
import org.apache.maven.settings.building.SettingsProblem;
+import org.apache.maven.settings.building.SettingsSource;
import org.codehaus.plexus.ContainerConfiguration;
import org.codehaus.plexus.DefaultContainerConfiguration;
import org.codehaus.plexus.DefaultPlexusContainer;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.classworlds.ClassWorld;
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.StringUtils;
import org.sonatype.aether.transfer.TransferListener;
import org.sonatype.plexus.components.cipher.DefaultPlexusCipher;
@@ -94,7 +97,7 @@ public class MavenCli
// Per-instance container supports fast embedded execution of core ITs
private DefaultPlexusContainer container;
- private PrintStreamLogger logger;
+ private Logger logger;
private ModelProcessor modelProcessor;
@@ -141,12 +144,30 @@ public class MavenCli
// 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;
+ PrintStream oldout = System.out;
+ PrintStream olderr = System.err;
- return doMain( cliRequest );
+ try
+ {
+ if ( stdout != null )
+ {
+ System.setOut( stdout );
+ }
+ if ( stderr != null )
+ {
+ System.setErr( stderr );
+ }
+
+ CliRequest cliRequest = new CliRequest( args, classWorld );
+ cliRequest.workingDirectory = workingDirectory;
+
+ return doMain( cliRequest );
+ }
+ finally
+ {
+ System.setOut( oldout );
+ System.setErr( olderr );
+ }
}
// TODO: need to externalize CliRequest
@@ -158,9 +179,9 @@ public class MavenCli
// Need to process cli options first to get possible logging
options
cli( cliRequest );
logging( cliRequest );
- commands( cliRequest );
properties( cliRequest );
container( cliRequest );
+ commands( cliRequest );
settings( cliRequest );
populateRequest( cliRequest );
encryption( cliRequest );
@@ -192,24 +213,6 @@ public class MavenCli
private void initialize( CliRequest cliRequest )
{
- if ( cliRequest.stdout == null )
- {
- cliRequest.stdout = System.out;
- }
- if ( cliRequest.stderr == null )
- {
- cliRequest.stderr = System.err;
- }
-
- if ( logger == null )
- {
- logger = new PrintStreamLogger( cliRequest.stdout );
- }
- else
- {
- logger.setStream( cliRequest.stdout );
- }
-
if ( cliRequest.workingDirectory == null )
{
cliRequest.workingDirectory = System.getProperty( "user.dir" );
@@ -253,8 +256,6 @@ public class MavenCli
cliRequest.request.setLoggingLevel(
MavenExecutionRequest.LOGGING_LEVEL_INFO );
}
- logger.setThreshold( cliRequest.request.getLoggingLevel() );
-
if ( cliRequest.commandLine.hasOption( CLIManager.LOG_FILE ) )
{
File logFile = new File( cliRequest.commandLine.getOptionValue(
CLIManager.LOG_FILE ) );
@@ -263,20 +264,15 @@ public class MavenCli
try
{
cliRequest.fileStream = new PrintStream( logFile );
- logger.setStream( cliRequest.fileStream );
+
+ System.setOut( cliRequest.fileStream );
+ System.setErr( cliRequest.fileStream );
}
catch ( FileNotFoundException e )
{
- cliRequest.stderr.println( e );
- logger.setStream( cliRequest.stdout );
+ System.err.println( e );
}
}
- else
- {
- logger.setStream( cliRequest.stdout );
- }
-
- cliRequest.request.setExecutionListener( new ExecutionEventLogger(
logger ) );
}
//
@@ -293,8 +289,8 @@ public class MavenCli
}
catch ( ParseException e )
{
- cliRequest.stderr.println( "Unable to parse command line options:
" + e.getMessage() );
- cliManager.displayHelp( cliRequest.stdout );
+ System.err.println( "Unable to parse command line options: " +
e.getMessage() );
+ cliManager.displayHelp( System.out );
throw e;
}
@@ -302,13 +298,13 @@ public class MavenCli
//
if ( cliRequest.commandLine.hasOption( CLIManager.HELP ) )
{
- cliManager.displayHelp( cliRequest.stdout );
+ cliManager.displayHelp( System.out );
throw new ExitException( 0 );
}
if ( cliRequest.commandLine.hasOption( CLIManager.VERSION ) )
{
- CLIReportingUtils.showVersion( cliRequest.stdout );
+ CLIReportingUtils.showVersion( System.out );
throw new ExitException( 0 );
}
}
@@ -317,7 +313,7 @@ public class MavenCli
{
if ( cliRequest.debug || cliRequest.commandLine.hasOption(
CLIManager.SHOW_VERSION ) )
{
- CLIReportingUtils.showVersion( cliRequest.stdout );
+ CLIReportingUtils.showVersion( System.out );
}
if ( cliRequest.showErrors )
@@ -325,9 +321,6 @@ public class MavenCli
logger.info( "Error stacktraces are turned on." );
}
- //
- // TODO: move checksum policies to
- //
if ( MavenExecutionRequest.CHECKSUM_POLICY_WARN.equals(
cliRequest.request.getGlobalChecksumPolicy() ) )
{
logger.info( "Disabling strict checksum verification on all
artifact downloads." );
@@ -355,6 +348,8 @@ public class MavenCli
if ( container == null )
{
+ logger = setupLogger( cliRequest );
+
ContainerConfiguration cc = new DefaultContainerConfiguration()
.setClassWorld( cliRequest.classWorld )
.setName( "maven" );
@@ -363,8 +358,6 @@ public class MavenCli
container.setLoggerManager( new MavenLoggerManager( logger ) );
- container.getLoggerManager().setThresholds(
cliRequest.request.getLoggingLevel() );
-
customizeContainer( container );
if ( cliRequest.classWorld == classWorld )
@@ -373,6 +366,8 @@ public class MavenCli
}
}
+ container.getLoggerManager().setThresholds(
cliRequest.request.getLoggingLevel() );
+
maven = container.lookup( Maven.class );
executionRequestPopulator = container.lookup(
MavenExecutionRequestPopulator.class );
@@ -384,6 +379,19 @@ public class MavenCli
dispatcher = (DefaultSecDispatcher) container.lookup(
SecDispatcher.class, "maven" );
}
+ private PrintStreamLogger setupLogger( CliRequest cliRequest )
+ {
+ PrintStreamLogger logger = new PrintStreamLogger( new
PrintStreamLogger.Provider()
+ {
+ public PrintStream getStream()
+ {
+ return System.out;
+ }
+ } );
+
+ return logger;
+ }
+
protected void customizeContainer( PlexusContainer container )
{
}
@@ -400,8 +408,7 @@ public class MavenCli
DefaultPlexusCipher cipher = new DefaultPlexusCipher();
- cliRequest.stdout.println( cipher.encryptAndDecorate( passwd,
-
DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION ) );
+ System.out.println( cipher.encryptAndDecorate( passwd,
DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION ) );
throw new ExitException( 0 );
}
@@ -433,7 +440,7 @@ public class MavenCli
DefaultPlexusCipher cipher = new DefaultPlexusCipher();
String masterPasswd = cipher.decryptDecorated( master,
DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION );
- cliRequest.stdout.println( cipher.encryptAndDecorate( passwd,
masterPasswd ) );
+ System.out.println( cipher.encryptAndDecorate( passwd,
masterPasswd ) );
throw new ExitException( 0 );
}
@@ -590,8 +597,6 @@ public class MavenCli
userSettingsFile = DEFAULT_USER_SETTINGS_FILE;
}
- logger.debug( "Reading user settings from " + userSettingsFile );
-
File globalSettingsFile;
if ( cliRequest.commandLine.hasOption(
CLIManager.ALTERNATE_GLOBAL_SETTINGS ) )
@@ -611,8 +616,6 @@ public class MavenCli
globalSettingsFile = DEFAULT_GLOBAL_SETTINGS_FILE;
}
- logger.debug( "Reading global settings from " + globalSettingsFile );
-
cliRequest.request.setGlobalSettingsFile( globalSettingsFile );
cliRequest.request.setUserSettingsFile( userSettingsFile );
@@ -622,6 +625,11 @@ public class MavenCli
settingsRequest.setSystemProperties( cliRequest.systemProperties );
settingsRequest.setUserProperties( cliRequest.userProperties );
+ logger.debug( "Reading global settings from "
+ + getSettingsLocation( settingsRequest.getGlobalSettingsSource(),
settingsRequest.getGlobalSettingsFile() ) );
+ logger.debug( "Reading user settings from "
+ + getSettingsLocation( settingsRequest.getUserSettingsSource(),
settingsRequest.getUserSettingsFile() ) );
+
SettingsBuildingResult settingsResult = settingsBuilder.build(
settingsRequest );
executionRequestPopulator.populateFromSettings( cliRequest.request,
settingsResult.getEffectiveSettings() );
@@ -640,12 +648,20 @@ public class MavenCli
}
}
+ private Object getSettingsLocation( SettingsSource source, File file )
+ {
+ if ( source != null )
+ {
+ return source.getLocation();
+ }
+ return file;
+ }
+
private MavenExecutionRequest populateRequest( CliRequest cliRequest )
{
MavenExecutionRequest request = cliRequest.request;
CommandLine commandLine = cliRequest.commandLine;
String workingDirectory = cliRequest.workingDirectory;
- boolean debug = cliRequest.debug;
boolean quiet = cliRequest.quiet;
boolean showErrors = cliRequest.showErrors;
@@ -654,7 +670,7 @@ public class MavenCli
{
if ( commandLine.hasOption( deprecatedOption ) )
{
- cliRequest.stdout.println( "[WARNING] Command line option -" +
deprecatedOption
+ logger.warn( "Command line option -" + deprecatedOption
+ " is deprecated and will be removed in future Maven
versions." );
}
}
@@ -776,38 +792,21 @@ public class MavenCli
}
else if ( request.isInteractiveMode() )
{
- transferListener = new ConsoleMavenTransferListener(
cliRequest.stdout );
+ transferListener = new ConsoleMavenTransferListener( System.out );
}
else
{
- transferListener = new BatchModeMavenTransferListener(
cliRequest.stdout );
+ transferListener = new BatchModeMavenTransferListener( System.out
);
}
+ ExecutionListener executionListener = new ExecutionEventLogger( logger
);
+
String alternatePomFile = null;
if ( commandLine.hasOption( CLIManager.ALTERNATE_POM_FILE ) )
{
alternatePomFile = commandLine.getOptionValue(
CLIManager.ALTERNATE_POM_FILE );
}
- int loggingLevel;
-
- if ( debug )
- {
- loggingLevel = MavenExecutionRequest.LOGGING_LEVEL_DEBUG;
- }
- else if ( quiet )
- {
- // TODO: we need to do some more work here. Some plugins use sys
out or log errors at info level.
- // Ideally, we could use Warn across the board
- loggingLevel = MavenExecutionRequest.LOGGING_LEVEL_ERROR;
- // TODO:Additionally, we can't change the mojo level because the
component key includes the version and
- // it isn't known ahead of time. This seems worth changing.
- }
- else
- {
- loggingLevel = MavenExecutionRequest.LOGGING_LEVEL_INFO;
- }
-
File userToolchainsFile;
if ( commandLine.hasOption( CLIManager.ALTERNATE_USER_TOOLCHAINS ) )
{
@@ -827,7 +826,7 @@ public class MavenCli
.setShowErrors( showErrors ) // default: false
.addActiveProfiles( activeProfiles ) // optional
.addInactiveProfiles( inactiveProfiles ) // optional
- .setLoggingLevel( loggingLevel ) // default: info
+ .setExecutionListener( executionListener )
.setTransferListener( transferListener ) // default: batch mode
which goes along with interactive
.setUpdateSnapshots( updateSnapshots ) // default: false
.setNoSnapshotUpdates( noSnapshotUpdates ) // default: false
@@ -1002,8 +1001,6 @@ public class MavenCli
{
String[] args;
CommandLine commandLine;
- PrintStream stdout;
- PrintStream stderr;
ClassWorld classWorld;
String workingDirectory;
boolean debug;
Modified:
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PrintStreamLogger.java
URL:
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PrintStreamLogger.java?rev=1032976&r1=1032975&r2=1032976&view=diff
==============================================================================
---
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PrintStreamLogger.java
(original)
+++
maven/maven-3/trunk/maven-embedder/src/main/java/org/apache/maven/cli/PrintStreamLogger.java
Tue Nov 9 13:09:51 2010
@@ -34,7 +34,12 @@ public class PrintStreamLogger
extends AbstractLogger
{
- private PrintStream out;
+ static interface Provider
+ {
+ PrintStream getStream();
+ }
+
+ private Provider provider;
private static final String FATAL_ERROR = "[FATAL] ";
@@ -46,6 +51,17 @@ public class PrintStreamLogger
private static final String DEBUG = "[DEBUG] ";
+ public PrintStreamLogger( Provider provider )
+ {
+ super( Logger.LEVEL_INFO, Maven.class.getName() );
+
+ if ( provider == null )
+ {
+ throw new IllegalArgumentException( "output stream provider
missing" );
+ }
+ this.provider = provider;
+ }
+
public PrintStreamLogger( PrintStream out )
{
super( Logger.LEVEL_INFO, Maven.class.getName() );
@@ -53,20 +69,28 @@ public class PrintStreamLogger
setStream( out );
}
- public void setStream( PrintStream out )
+ public void setStream( final PrintStream out )
{
if ( out == null )
{
throw new IllegalArgumentException( "output stream missing" );
}
- this.out = out;
+ this.provider = new Provider()
+ {
+ public PrintStream getStream()
+ {
+ return out;
+ }
+ };
}
public void debug( String message, Throwable throwable )
{
if ( isDebugEnabled() )
{
+ PrintStream out = provider.getStream();
+
out.print( DEBUG );
out.println( message );
@@ -81,6 +105,8 @@ public class PrintStreamLogger
{
if ( isInfoEnabled() )
{
+ PrintStream out = provider.getStream();
+
out.print( INFO );
out.println( message );
@@ -95,6 +121,8 @@ public class PrintStreamLogger
{
if ( isWarnEnabled() )
{
+ PrintStream out = provider.getStream();
+
out.print( WARNING );
out.println( message );
@@ -109,6 +137,8 @@ public class PrintStreamLogger
{
if ( isErrorEnabled() )
{
+ PrintStream out = provider.getStream();
+
out.print( ERROR );
out.println( message );
@@ -123,6 +153,8 @@ public class PrintStreamLogger
{
if ( isFatalErrorEnabled() )
{
+ PrintStream out = provider.getStream();
+
out.print( FATAL_ERROR );
out.println( message );
@@ -135,6 +167,8 @@ public class PrintStreamLogger
public void close()
{
+ PrintStream out = provider.getStream();
+
if ( out == System.out || out == System.err )
{
out.flush();