Modified: maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java?rev=1126834&r1=1126833&r2=1126834&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java Tue May 24 02:33:37 2011 @@ -19,17 +19,6 @@ package org.apache.maven.cli; * under the License. */ -import java.io.File; -import java.io.FileNotFoundException; -import java.io.PrintStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.StringTokenizer; - import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.UnrecognizedOptionException; @@ -50,6 +39,10 @@ import org.apache.maven.lifecycle.intern import org.apache.maven.model.building.ModelProcessor; import org.apache.maven.project.MavenProject; import org.apache.maven.properties.internal.EnvironmentUtils; +import org.apache.maven.repository.mirror.configuration.FileMirrorRouterConfigSource; +import org.apache.maven.repository.mirror.configuration.MirrorRouterConfigBuilder; +import org.apache.maven.repository.mirror.configuration.MirrorRouterConfiguration; +import org.apache.maven.repository.mirror.configuration.MirrorRouterConfigurationException; import org.apache.maven.settings.building.DefaultSettingsBuildingRequest; import org.apache.maven.settings.building.SettingsBuilder; import org.apache.maven.settings.building.SettingsBuildingRequest; @@ -72,6 +65,17 @@ import org.sonatype.plexus.components.se import org.sonatype.plexus.components.sec.dispatcher.SecUtil; import org.sonatype.plexus.components.sec.dispatcher.model.SettingsSecurity; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.StringTokenizer; + // TODO: push all common bits back to plexus cli and prepare for transition to Guice. We don't need 50 ways to make CLIs /** @@ -94,12 +98,12 @@ public class MavenCli new File( System.getProperty( "maven.home", System.getProperty( "user.dir", "" ) ), "conf/settings.xml" ); public static final File DEFAULT_USER_TOOLCHAINS_FILE = new File( userMavenConfigurationHome, "toolchains.xml" ); - + public static final File DEFAULT_USER_EXT_CONF_DIR = new File( userMavenConfigurationHome, "conf" ); private static final String EXT_CLASS_PATH = "maven.ext.class.path"; - private ClassWorld classWorld; + private final ClassWorld classWorld; // Per-instance container supports fast embedded execution of core ITs private DefaultPlexusContainer container; @@ -118,43 +122,46 @@ public class MavenCli private DefaultSecDispatcher dispatcher; + private MirrorRouterConfigBuilder routerConfBuilder; + public MavenCli() { this( null ); } // This supports painless invocation by the Verifier during embedded execution of the core ITs - public MavenCli( ClassWorld classWorld ) + public MavenCli( final ClassWorld classWorld ) { this.classWorld = classWorld; } - public static void main( String[] args ) + public static void main( final String[] args ) { - int result = main( args, null ); + final int result = main( args, null ); System.exit( result ); } /** @noinspection ConfusingMainMethod */ - public static int main( String[] args, ClassWorld classWorld ) + public static int main( final String[] args, final ClassWorld classWorld ) { - MavenCli cli = new MavenCli(); + final MavenCli cli = new MavenCli(); return cli.doMain( new CliRequest( args, classWorld ) ); } // TODO: need to externalize CliRequest - public static int doMain( String[] args, ClassWorld classWorld ) + public static int doMain( final String[] args, final ClassWorld classWorld ) { - MavenCli cli = new MavenCli(); + final MavenCli cli = new MavenCli(); 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 ) + public int doMain( final String[] args, final String workingDirectory, final PrintStream stdout, + final PrintStream stderr ) { - PrintStream oldout = System.out; - PrintStream olderr = System.err; + final PrintStream oldout = System.out; + final PrintStream olderr = System.err; try { @@ -167,7 +174,7 @@ public class MavenCli System.setErr( stderr ); } - CliRequest cliRequest = new CliRequest( args, classWorld ); + final CliRequest cliRequest = new CliRequest( args, classWorld ); cliRequest.workingDirectory = workingDirectory; return doMain( cliRequest ); @@ -180,7 +187,7 @@ public class MavenCli } // TODO: need to externalize CliRequest - public int doMain( CliRequest cliRequest ) + public int doMain( final CliRequest cliRequest ) { try { @@ -197,22 +204,22 @@ public class MavenCli encryption( cliRequest ); return execute( cliRequest ); } - catch( ExitException e ) + catch ( final ExitException e ) { return e.exitCode; } - catch ( UnrecognizedOptionException e ) + catch ( final UnrecognizedOptionException e ) { // pure user error, suppress stack trace return 1; } - catch ( BuildAbort e ) + catch ( final BuildAbort e ) { CLIReportingUtils.showError( logger, "ABORTED", e, cliRequest.showErrors ); return 2; } - catch ( Exception e ) + catch ( final Exception e ) { CLIReportingUtils.showError( logger, "Error executing Maven.", e, cliRequest.showErrors ); @@ -227,7 +234,7 @@ public class MavenCli } } - private void initialize( CliRequest cliRequest ) + private void initialize( final CliRequest cliRequest ) { if ( cliRequest.workingDirectory == null ) { @@ -238,7 +245,7 @@ public class MavenCli // Make sure the Maven home directory is an absolute path to save us from confusion with say drive-relative // Windows paths. // - String mavenHome = System.getProperty( "maven.home" ); + final String mavenHome = System.getProperty( "maven.home" ); if ( mavenHome != null ) { @@ -249,7 +256,7 @@ public class MavenCli // // Logging needs to be handled in a standard way at the container level. // - private void logging( CliRequest cliRequest ) + private void logging( final CliRequest cliRequest ) { cliRequest.debug = cliRequest.commandLine.hasOption( CLIManager.DEBUG ); cliRequest.quiet = !cliRequest.debug && cliRequest.commandLine.hasOption( CLIManager.QUIET ); @@ -284,7 +291,7 @@ public class MavenCli System.setOut( cliRequest.fileStream ); System.setErr( cliRequest.fileStream ); } - catch ( FileNotFoundException e ) + catch ( final FileNotFoundException e ) { System.err.println( e ); } @@ -294,16 +301,16 @@ public class MavenCli // // Every bit of information taken from the CLI should be processed here. // - private void cli( CliRequest cliRequest ) + private void cli( final CliRequest cliRequest ) throws Exception { - CLIManager cliManager = new CLIManager(); + final CLIManager cliManager = new CLIManager(); try { cliRequest.commandLine = cliManager.parse( cliRequest.args ); } - catch ( ParseException e ) + catch ( final ParseException e ) { System.err.println( "Unable to parse command line options: " + e.getMessage() ); cliManager.displayHelp( System.out ); @@ -325,7 +332,7 @@ public class MavenCli } } - private void version( CliRequest cliRequest ) + private void version( final CliRequest cliRequest ) { if ( cliRequest.debug || cliRequest.commandLine.hasOption( CLIManager.SHOW_VERSION ) ) { @@ -333,7 +340,7 @@ public class MavenCli } } - private void commands( CliRequest cliRequest ) + private void commands( final CliRequest cliRequest ) { if ( cliRequest.showErrors ) { @@ -350,12 +357,12 @@ public class MavenCli } } - private void properties( CliRequest cliRequest ) + private void properties( final CliRequest cliRequest ) { populateProperties( cliRequest.commandLine, cliRequest.systemProperties, cliRequest.userProperties ); } - private void container( CliRequest cliRequest ) + private void container( final CliRequest cliRequest ) throws Exception { if ( cliRequest.classWorld == null ) @@ -369,10 +376,10 @@ public class MavenCli { logger = setupLogger( cliRequest ); - ContainerConfiguration cc = new DefaultContainerConfiguration() - .setClassWorld( cliRequest.classWorld ) - .setRealm( setupContainerRealm( cliRequest ) ) - .setName( "maven" ); + final ContainerConfiguration cc = + new DefaultContainerConfiguration().setClassWorld( cliRequest.classWorld ) + .setRealm( setupContainerRealm( cliRequest ) ) + .setName( "maven" ); container = new DefaultPlexusContainer( cc ); @@ -395,8 +402,8 @@ public class MavenCli eventSpyDispatcher = container.lookup( EventSpyDispatcher.class ); - DefaultEventSpyContext eventSpyContext = new DefaultEventSpyContext(); - Map<String, Object> data = eventSpyContext.getData(); + final DefaultEventSpyContext eventSpyContext = new DefaultEventSpyContext(); + final Map<String, Object> data = eventSpyContext.getData(); data.put( "plexus", container ); data.put( "workingDirectory", cliRequest.workingDirectory ); data.put( "systemProperties", cliRequest.systemProperties ); @@ -411,6 +418,8 @@ public class MavenCli executionRequestPopulator = container.lookup( MavenExecutionRequestPopulator.class ); + routerConfBuilder = container.lookup( MirrorRouterConfigBuilder.class ); + modelProcessor = createModelProcessor( container ); settingsBuilder = container.lookup( SettingsBuilder.class ); @@ -418,9 +427,9 @@ public class MavenCli dispatcher = (DefaultSecDispatcher) container.lookup( SecDispatcher.class, "maven" ); } - private PrintStreamLogger setupLogger( CliRequest cliRequest ) + private PrintStreamLogger setupLogger( final CliRequest cliRequest ) { - PrintStreamLogger logger = new PrintStreamLogger( new PrintStreamLogger.Provider() + final PrintStreamLogger logger = new PrintStreamLogger( new PrintStreamLogger.Provider() { public PrintStream getStream() { @@ -433,7 +442,7 @@ public class MavenCli return logger; } - private ClassRealm setupContainerRealm( CliRequest cliRequest ) + private ClassRealm setupContainerRealm( final CliRequest cliRequest ) throws Exception { ClassRealm containerRealm = null; @@ -446,7 +455,7 @@ public class MavenCli if ( StringUtils.isNotEmpty( extClassPath ) ) { - String[] jars = StringUtils.split( extClassPath, File.pathSeparator ); + final String[] jars = StringUtils.split( extClassPath, File.pathSeparator ); if ( jars.length > 0 ) { @@ -456,13 +465,13 @@ public class MavenCli coreRealm = (ClassRealm) cliRequest.classWorld.getRealms().iterator().next(); } - ClassRealm extRealm = cliRequest.classWorld.newRealm( "maven.ext", null ); + final ClassRealm extRealm = cliRequest.classWorld.newRealm( "maven.ext", null ); logger.debug( "Populating class realm " + extRealm.getId() ); - for ( String jar : jars ) + for ( final String jar : jars ) { - File file = resolveFile( new File( jar ), cliRequest.workingDirectory ); + final File file = resolveFile( new File( jar ), cliRequest.workingDirectory ); logger.debug( " Included " + file ); @@ -478,21 +487,21 @@ public class MavenCli return containerRealm; } - protected void customizeContainer( PlexusContainer container ) + protected void customizeContainer( final PlexusContainer container ) { } // // This should probably be a separate tool and not be baked into Maven. // - private void encryption( CliRequest cliRequest ) + private void encryption( final CliRequest cliRequest ) throws Exception { if ( cliRequest.commandLine.hasOption( CLIManager.ENCRYPT_MASTER_PASSWORD ) ) { - String passwd = cliRequest.commandLine.getOptionValue( CLIManager.ENCRYPT_MASTER_PASSWORD ); + final String passwd = cliRequest.commandLine.getOptionValue( CLIManager.ENCRYPT_MASTER_PASSWORD ); - DefaultPlexusCipher cipher = new DefaultPlexusCipher(); + final DefaultPlexusCipher cipher = new DefaultPlexusCipher(); System.out.println( cipher.encryptAndDecorate( passwd, DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION ) ); @@ -500,7 +509,7 @@ public class MavenCli } else if ( cliRequest.commandLine.hasOption( CLIManager.ENCRYPT_PASSWORD ) ) { - String passwd = cliRequest.commandLine.getOptionValue( CLIManager.ENCRYPT_PASSWORD ); + final String passwd = cliRequest.commandLine.getOptionValue( CLIManager.ENCRYPT_PASSWORD ); String configurationFile = dispatcher.getConfigurationFile(); @@ -509,11 +518,12 @@ public class MavenCli configurationFile = System.getProperty( "user.home" ) + configurationFile.substring( 1 ); } - String file = System.getProperty( DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION, configurationFile ); + final String file = + System.getProperty( DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION, configurationFile ); String master = null; - SettingsSecurity sec = SecUtil.read( file, true ); + final SettingsSecurity sec = SecUtil.read( file, true ); if ( sec != null ) { master = sec.getMaster(); @@ -524,19 +534,20 @@ public class MavenCli throw new IllegalStateException( "Master password is not set in the setting security file: " + file ); } - DefaultPlexusCipher cipher = new DefaultPlexusCipher(); - String masterPasswd = cipher.decryptDecorated( master, DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION ); + final DefaultPlexusCipher cipher = new DefaultPlexusCipher(); + final String masterPasswd = + cipher.decryptDecorated( master, DefaultSecDispatcher.SYSTEM_PROPERTY_SEC_LOCATION ); System.out.println( cipher.encryptAndDecorate( passwd, masterPasswd ) ); throw new ExitException( 0 ); } } - private int execute( CliRequest cliRequest ) + private int execute( final CliRequest cliRequest ) { eventSpyDispatcher.onEvent( cliRequest.request ); - MavenExecutionResult result = maven.execute( cliRequest.request ); + final MavenExecutionResult result = maven.execute( cliRequest.request ); eventSpyDispatcher.onEvent( result ); @@ -544,15 +555,15 @@ public class MavenCli if ( result.hasExceptions() ) { - ExceptionHandler handler = new DefaultExceptionHandler(); + final ExceptionHandler handler = new DefaultExceptionHandler(); - Map<String, String> references = new LinkedHashMap<String, String>(); + final Map<String, String> references = new LinkedHashMap<String, String>(); MavenProject project = null; - for ( Throwable exception : result.getExceptions() ) + for ( final Throwable exception : result.getExceptions() ) { - ExceptionSummary summary = handler.handleException( exception ); + final ExceptionSummary summary = handler.handleException( exception ); logSummary( summary, references, "", cliRequest.showErrors ); @@ -577,9 +588,9 @@ public class MavenCli { logger.error( "" ); logger.error( "For more information about the errors and possible solutions" - + ", please read the following articles:" ); + + ", please read the following articles:" ); - for ( Map.Entry<String, String> entry : references.entrySet() ) + for ( final Map.Entry<String, String> entry : references.entrySet() ) { logger.error( entry.getValue() + " " + entry.getKey() ); } @@ -609,8 +620,8 @@ public class MavenCli } } - private void logSummary( ExceptionSummary summary, Map<String, String> references, String indent, - boolean showErrors ) + private void logSummary( final ExceptionSummary summary, final Map<String, String> references, String indent, + final boolean showErrors ) { String referenceKey = ""; @@ -638,11 +649,11 @@ public class MavenCli } } - String[] lines = msg.split( "(\r\n)|(\r)|(\n)" ); + final String[] lines = msg.split( "(\r\n)|(\r)|(\n)" ); for ( int i = 0; i < lines.length; i++ ) { - String line = indent + lines[i].trim(); + final String line = indent + lines[i].trim(); if ( i == lines.length - 1 && ( showErrors || ( summary.getException() instanceof InternalErrorException ) ) ) { @@ -656,19 +667,19 @@ public class MavenCli indent += " "; - for ( ExceptionSummary child : summary.getChildren() ) + for ( final ExceptionSummary child : summary.getChildren() ) { logSummary( child, references, indent, showErrors ); } } - protected ModelProcessor createModelProcessor( PlexusContainer container ) + protected ModelProcessor createModelProcessor( final PlexusContainer container ) throws ComponentLookupException { return container.lookup( ModelProcessor.class ); } - private void settings( CliRequest cliRequest ) + private void settings( final CliRequest cliRequest ) throws Exception { File userSettingsFile; @@ -680,8 +691,7 @@ public class MavenCli if ( !userSettingsFile.isFile() ) { - throw new FileNotFoundException( "The specified user settings file does not exist: " - + userSettingsFile ); + throw new FileNotFoundException( "The specified user settings file does not exist: " + userSettingsFile ); } } else @@ -700,7 +710,7 @@ public class MavenCli if ( !globalSettingsFile.isFile() ) { throw new FileNotFoundException( "The specified global settings file does not exist: " - + globalSettingsFile ); + + globalSettingsFile ); } } else @@ -711,7 +721,7 @@ public class MavenCli cliRequest.request.setGlobalSettingsFile( globalSettingsFile ); cliRequest.request.setUserSettingsFile( userSettingsFile ); - SettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest(); + final SettingsBuildingRequest settingsRequest = new DefaultSettingsBuildingRequest(); settingsRequest.setGlobalSettingsFile( globalSettingsFile ); settingsRequest.setUserSettingsFile( userSettingsFile ); settingsRequest.setSystemProperties( cliRequest.systemProperties ); @@ -720,11 +730,13 @@ public class MavenCli eventSpyDispatcher.onEvent( settingsRequest ); logger.debug( "Reading global settings from " - + getSettingsLocation( settingsRequest.getGlobalSettingsSource(), settingsRequest.getGlobalSettingsFile() ) ); + + getSettingsLocation( settingsRequest.getGlobalSettingsSource(), + settingsRequest.getGlobalSettingsFile() ) ); logger.debug( "Reading user settings from " - + getSettingsLocation( settingsRequest.getUserSettingsSource(), settingsRequest.getUserSettingsFile() ) ); + + getSettingsLocation( settingsRequest.getUserSettingsSource(), + settingsRequest.getUserSettingsFile() ) ); - SettingsBuildingResult settingsResult = settingsBuilder.build( settingsRequest ); + final SettingsBuildingResult settingsResult = settingsBuilder.build( settingsRequest ); eventSpyDispatcher.onEvent( settingsResult ); @@ -735,7 +747,7 @@ public class MavenCli logger.warn( "" ); logger.warn( "Some problems were encountered while building the effective settings" ); - for ( SettingsProblem problem : settingsResult.getProblems() ) + for ( final SettingsProblem problem : settingsResult.getProblems() ) { logger.warn( problem.getMessage() + " @ " + problem.getLocation() ); } @@ -744,7 +756,7 @@ public class MavenCli } } - private Object getSettingsLocation( SettingsSource source, File file ) + private Object getSettingsLocation( final SettingsSource source, final File file ) { if ( source != null ) { @@ -753,21 +765,22 @@ public class MavenCli return file; } - private MavenExecutionRequest populateRequest( CliRequest cliRequest ) + private MavenExecutionRequest populateRequest( final CliRequest cliRequest ) + throws MirrorRouterConfigurationException { - MavenExecutionRequest request = cliRequest.request; - CommandLine commandLine = cliRequest.commandLine; - String workingDirectory = cliRequest.workingDirectory; - boolean quiet = cliRequest.quiet; - boolean showErrors = cliRequest.showErrors; + final MavenExecutionRequest request = cliRequest.request; + final CommandLine commandLine = cliRequest.commandLine; + final String workingDirectory = cliRequest.workingDirectory; + final boolean quiet = cliRequest.quiet; + final boolean showErrors = cliRequest.showErrors; - String[] deprecatedOptions = { "up", "npu", "cpu", "npr" }; - for ( String deprecatedOption : deprecatedOptions ) + final String[] deprecatedOptions = { "up", "npu", "cpu", "npr" }; + for ( final String deprecatedOption : deprecatedOptions ) { if ( commandLine.hasOption( deprecatedOption ) ) { logger.warn( "Command line option -" + deprecatedOption - + " is deprecated and will be removed in future Maven versions." ); + + " is deprecated and will be removed in future Maven versions." ); } } @@ -791,8 +804,8 @@ public class MavenCli // // ---------------------------------------------------------------------- - @SuppressWarnings("unchecked") - List<String> goals = commandLine.getArgList(); + @SuppressWarnings( "unchecked" ) + final List<String> goals = commandLine.getArgList(); boolean recursive = true; @@ -840,28 +853,28 @@ public class MavenCli globalChecksumPolicy = MavenExecutionRequest.CHECKSUM_POLICY_WARN; } - File baseDirectory = new File( workingDirectory, "" ).getAbsoluteFile(); + final File baseDirectory = new File( workingDirectory, "" ).getAbsoluteFile(); // ---------------------------------------------------------------------- // Profile Activation // ---------------------------------------------------------------------- - List<String> activeProfiles = new ArrayList<String>(); + final List<String> activeProfiles = new ArrayList<String>(); - List<String> inactiveProfiles = new ArrayList<String>(); + final List<String> inactiveProfiles = new ArrayList<String>(); if ( commandLine.hasOption( CLIManager.ACTIVATE_PROFILES ) ) { - String[] profileOptionValues = commandLine.getOptionValues( CLIManager.ACTIVATE_PROFILES ); + final String[] profileOptionValues = commandLine.getOptionValues( CLIManager.ACTIVATE_PROFILES ); if ( profileOptionValues != null ) { for ( int i = 0; i < profileOptionValues.length; ++i ) { - StringTokenizer profileTokens = new StringTokenizer( profileOptionValues[i], "," ); + final StringTokenizer profileTokens = new StringTokenizer( profileOptionValues[i], "," ); while ( profileTokens.hasMoreTokens() ) { - String profileAction = profileTokens.nextToken().trim(); + final String profileAction = profileTokens.nextToken().trim(); if ( profileAction.startsWith( "-" ) || profileAction.startsWith( "!" ) ) { @@ -915,31 +928,43 @@ public class MavenCli userToolchainsFile = MavenCli.DEFAULT_USER_TOOLCHAINS_FILE; } - request.setBaseDirectory( baseDirectory ).setGoals( goals ) - .setSystemProperties( cliRequest.systemProperties ) - .setUserProperties( cliRequest.userProperties ) - .setReactorFailureBehavior( reactorFailureBehaviour ) // default: fail fast - .setRecursive( recursive ) // default: true - .setShowErrors( showErrors ) // default: false - .addActiveProfiles( activeProfiles ) // optional - .addInactiveProfiles( inactiveProfiles ) // optional - .setExecutionListener( executionListener ) - .setTransferListener( transferListener ) // default: batch mode which goes along with interactive - .setUpdateSnapshots( updateSnapshots ) // default: false - .setNoSnapshotUpdates( noSnapshotUpdates ) // default: false - .setGlobalChecksumPolicy( globalChecksumPolicy ) // default: warn - .setUserToolchainsFile( userToolchainsFile ) - .setUserExtensionConfDir( MavenCli.DEFAULT_USER_EXT_CONF_DIR ); + final MirrorRouterConfiguration routerConfig = + routerConfBuilder.build( new FileMirrorRouterConfigSource( DEFAULT_USER_EXT_CONF_DIR ) ); + + request.setBaseDirectory( baseDirectory ) + .setGoals( goals ) + .setSystemProperties( cliRequest.systemProperties ) + .setUserProperties( cliRequest.userProperties ) + .setReactorFailureBehavior( reactorFailureBehaviour ) + // default: fail fast + .setRecursive( recursive ) + // default: true + .setShowErrors( showErrors ) + // default: false + .addActiveProfiles( activeProfiles ) + // optional + .addInactiveProfiles( inactiveProfiles ) + // optional + .setExecutionListener( executionListener ) + .setTransferListener( transferListener ) + // default: batch mode which goes along with interactive + .setUpdateSnapshots( updateSnapshots ) + // default: false + .setNoSnapshotUpdates( noSnapshotUpdates ) + // default: false + .setGlobalChecksumPolicy( globalChecksumPolicy ) + // default: warn + .setUserToolchainsFile( userToolchainsFile ); if ( alternatePomFile != null ) { - File pom = resolveFile( new File( alternatePomFile ), workingDirectory ); + final File pom = resolveFile( new File( alternatePomFile ), workingDirectory ); request.setPom( pom ); } else { - File pom = modelProcessor.locatePom( baseDirectory ); + final File pom = modelProcessor.locatePom( baseDirectory ); if ( pom.isFile() ) { @@ -959,18 +984,17 @@ public class MavenCli if ( commandLine.hasOption( CLIManager.PROJECT_LIST ) ) { - String[] values = commandLine.getOptionValues( CLIManager.PROJECT_LIST ); - List<String> projects = new ArrayList<String>(); + final String[] values = commandLine.getOptionValues( CLIManager.PROJECT_LIST ); + final List<String> projects = new ArrayList<String>(); for ( int i = 0; i < values.length; i++ ) { - String[] tmp = StringUtils.split( values[i], "," ); + final String[] tmp = StringUtils.split( values[i], "," ); projects.addAll( Arrays.asList( tmp ) ); } request.setSelectedProjects( projects ); } - if ( commandLine.hasOption( CLIManager.ALSO_MAKE ) - && !commandLine.hasOption( CLIManager.ALSO_MAKE_DEPENDENTS ) ) + if ( commandLine.hasOption( CLIManager.ALSO_MAKE ) && !commandLine.hasOption( CLIManager.ALSO_MAKE_DEPENDENTS ) ) { request.setMakeBehavior( MavenExecutionRequest.REACTOR_MAKE_UPSTREAM ); } @@ -997,10 +1021,13 @@ public class MavenCli request.setLocalRepositoryPath( localRepoProperty ); } - final String threadConfiguration = commandLine.hasOption( CLIManager.THREADS ) - ? commandLine.getOptionValue( CLIManager.THREADS ) - : request.getSystemProperties().getProperty( - MavenCli.THREADS_DEPRECATED ); // TODO: Remove this setting. Note that the int-tests use it + final String threadConfiguration = + commandLine.hasOption( CLIManager.THREADS ) ? commandLine.getOptionValue( CLIManager.THREADS ) + : request.getSystemProperties().getProperty( MavenCli.THREADS_DEPRECATED ); // TODO: Remove + // this setting. + // Note that the + // int-tests use + // it if ( threadConfiguration != null ) { @@ -1018,7 +1045,7 @@ public class MavenCli return request; } - static File resolveFile( File file, String workingDirectory ) + static File resolveFile( final File file, final String workingDirectory ) { if ( file == null ) { @@ -1043,7 +1070,8 @@ public class MavenCli // System properties handling // ---------------------------------------------------------------------- - static void populateProperties( CommandLine commandLine, Properties systemProperties, Properties userProperties ) + static void populateProperties( final CommandLine commandLine, final Properties systemProperties, + final Properties userProperties ) { EnvironmentUtils.addEnvVars( systemProperties ); @@ -1055,7 +1083,7 @@ public class MavenCli if ( commandLine.hasOption( CLIManager.SET_SYSTEM_PROPERTY ) ) { - String[] defStrs = commandLine.getOptionValues( CLIManager.SET_SYSTEM_PROPERTY ); + final String[] defStrs = commandLine.getOptionValues( CLIManager.SET_SYSTEM_PROPERTY ); if ( defStrs != null ) { @@ -1069,13 +1097,13 @@ public class MavenCli systemProperties.putAll( System.getProperties() ); } - private static void setCliProperty( String property, Properties properties ) + private static void setCliProperty( final String property, final Properties properties ) { String name; String value; - int i = property.indexOf( "=" ); + final int i = property.indexOf( "=" ); if ( i <= 0 ) { @@ -1103,22 +1131,32 @@ public class MavenCli static class CliRequest { String[] args; + CommandLine commandLine; + ClassWorld classWorld; + String workingDirectory; + boolean debug; + boolean quiet; + boolean showErrors = true; + PrintStream fileStream; + Properties userProperties = new Properties(); + Properties systemProperties = new Properties(); + MavenExecutionRequest request; - CliRequest( String[] args, ClassWorld classWorld ) + CliRequest( final String[] args, final ClassWorld classWorld ) { this.args = args; this.classWorld = classWorld; - this.request = new DefaultMavenExecutionRequest(); + request = new DefaultMavenExecutionRequest(); } } @@ -1128,7 +1166,7 @@ public class MavenCli public int exitCode; - public ExitException( int exitCode ) + public ExitException( final int exitCode ) { this.exitCode = exitCode; }