mirror of https://github.com/apache/maven.git
parent
c229278477
commit
4476026c52
|
@ -24,7 +24,7 @@ import java.io.PrintWriter;
|
||||||
|
|
||||||
import org.apache.commons.cli.CommandLine;
|
import org.apache.commons.cli.CommandLine;
|
||||||
import org.apache.commons.cli.CommandLineParser;
|
import org.apache.commons.cli.CommandLineParser;
|
||||||
import org.apache.commons.cli.GnuParser;
|
import org.apache.commons.cli.DefaultParser;
|
||||||
import org.apache.commons.cli.HelpFormatter;
|
import org.apache.commons.cli.HelpFormatter;
|
||||||
import org.apache.commons.cli.Option;
|
import org.apache.commons.cli.Option;
|
||||||
import org.apache.commons.cli.Options;
|
import org.apache.commons.cli.Options;
|
||||||
|
@ -123,7 +123,7 @@ public class CLIManager
|
||||||
options = new Options();
|
options = new Options();
|
||||||
options.addOption( Option.builder( Character.toString( HELP ) ).longOpt( "help" ).desc( "Display help information" ).build() );
|
options.addOption( Option.builder( Character.toString( HELP ) ).longOpt( "help" ).desc( "Display help information" ).build() );
|
||||||
options.addOption( Option.builder( Character.toString( ALTERNATE_POM_FILE ) ).longOpt( "file" ).hasArg().desc( "Force the use of an alternate POM file (or directory with pom.xml)" ).build() );
|
options.addOption( Option.builder( Character.toString( ALTERNATE_POM_FILE ) ).longOpt( "file" ).hasArg().desc( "Force the use of an alternate POM file (or directory with pom.xml)" ).build() );
|
||||||
options.addOption( Option.builder( Character.toString( SET_SYSTEM_PROPERTY ) ).hasArg().desc( "Define a system property" ).build() );
|
options.addOption( Option.builder( Character.toString( SET_SYSTEM_PROPERTY ) ).numberOfArgs( 2 ).valueSeparator( '=' ).desc( "Define a system property" ).build() );
|
||||||
options.addOption( Option.builder( Character.toString( OFFLINE ) ).longOpt( "offline" ).desc( "Work offline" ).build() );
|
options.addOption( Option.builder( Character.toString( OFFLINE ) ).longOpt( "offline" ).desc( "Work offline" ).build() );
|
||||||
options.addOption( Option.builder( Character.toString( VERSION ) ).longOpt( "version" ).desc( "Display version information" ).build() );
|
options.addOption( Option.builder( Character.toString( VERSION ) ).longOpt( "version" ).desc( "Display version information" ).build() );
|
||||||
options.addOption( Option.builder( Character.toString( QUIET ) ).longOpt( "quiet" ).desc( "Quiet output - only show errors" ).build() );
|
options.addOption( Option.builder( Character.toString( QUIET ) ).longOpt( "quiet" ).desc( "Quiet output - only show errors" ).build() );
|
||||||
|
@ -169,7 +169,7 @@ public class CLIManager
|
||||||
// We need to eat any quotes surrounding arguments...
|
// We need to eat any quotes surrounding arguments...
|
||||||
String[] cleanArgs = CleanArgument.cleanArgs( args );
|
String[] cleanArgs = CleanArgument.cleanArgs( args );
|
||||||
|
|
||||||
CommandLineParser parser = new GnuParser();
|
CommandLineParser parser = new DefaultParser();
|
||||||
|
|
||||||
return parser.parse( options, cleanArgs );
|
return parser.parse( options, cleanArgs );
|
||||||
}
|
}
|
||||||
|
|
|
@ -1718,18 +1718,11 @@ public class MavenCli
|
||||||
// are most dominant.
|
// are most dominant.
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
if ( commandLine.hasOption( CLIManager.SET_SYSTEM_PROPERTY ) )
|
final Properties userSpecifiedProperties = commandLine.getOptionProperties(
|
||||||
{
|
String.valueOf( CLIManager.SET_SYSTEM_PROPERTY ) );
|
||||||
String[] defStrs = commandLine.getOptionValues( CLIManager.SET_SYSTEM_PROPERTY );
|
userSpecifiedProperties.forEach(
|
||||||
|
( prop, value ) -> setCliProperty( (String) prop, (String) value, userProperties )
|
||||||
if ( defStrs != null )
|
);
|
||||||
{
|
|
||||||
for ( String defStr : defStrs )
|
|
||||||
{
|
|
||||||
setCliProperty( defStr, userProperties );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SystemProperties.addSystemProperties( systemProperties );
|
SystemProperties.addSystemProperties( systemProperties );
|
||||||
|
|
||||||
|
@ -1747,27 +1740,8 @@ public class MavenCli
|
||||||
systemProperties.setProperty( "maven.build.version", mavenBuildVersion );
|
systemProperties.setProperty( "maven.build.version", mavenBuildVersion );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setCliProperty( String property, Properties properties )
|
private static void setCliProperty( String name, String value, Properties properties )
|
||||||
{
|
{
|
||||||
String name;
|
|
||||||
|
|
||||||
String value;
|
|
||||||
|
|
||||||
int i = property.indexOf( '=' );
|
|
||||||
|
|
||||||
if ( i <= 0 )
|
|
||||||
{
|
|
||||||
name = property.trim();
|
|
||||||
|
|
||||||
value = "true";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
name = property.substring( 0, i ).trim();
|
|
||||||
|
|
||||||
value = property.substring( i + 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
properties.setProperty( name, value );
|
properties.setProperty( name, value );
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
package org.apache.maven.cli;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
* or more contributor license agreements. See the NOTICE file
|
|
||||||
* distributed with this work for additional information
|
|
||||||
* regarding copyright ownership. The ASF licenses this file
|
|
||||||
* to you under the Apache License, Version 2.0 (the
|
|
||||||
* "License"); you may not use this file except in compliance
|
|
||||||
* with the License. You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.is;
|
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
||||||
|
|
||||||
import org.apache.commons.cli.CommandLine;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
public class CLIManagerTest
|
|
||||||
{
|
|
||||||
private CLIManager cliManager;
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setup()
|
|
||||||
{
|
|
||||||
cliManager = new CLIManager();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void spacedOptions()
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
CommandLine cmdLine = cliManager.parse( "-X -Dx=1 -D y=2 test".split( " " ) );
|
|
||||||
assertTrue( cmdLine.hasOption( CLIManager.VERBOSE ) );
|
|
||||||
assertThat( cmdLine.getOptionValues( CLIManager.SET_SYSTEM_PROPERTY )[0], is( "x=1" ) );
|
|
||||||
assertThat( cmdLine.getOptionValues( CLIManager.SET_SYSTEM_PROPERTY )[1], is( "y=2" ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -45,11 +45,11 @@ import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.commons.cli.CommandLine;
|
import org.apache.commons.cli.CommandLine;
|
||||||
import org.apache.commons.cli.GnuParser;
|
import org.apache.commons.cli.CommandLineParser;
|
||||||
|
import org.apache.commons.cli.DefaultParser;
|
||||||
import org.apache.commons.cli.Option;
|
import org.apache.commons.cli.Option;
|
||||||
import org.apache.commons.cli.Options;
|
import org.apache.commons.cli.Options;
|
||||||
import org.apache.commons.cli.ParseException;
|
import org.apache.commons.cli.ParseException;
|
||||||
import org.apache.commons.cli.Parser;
|
|
||||||
import org.apache.maven.Maven;
|
import org.apache.maven.Maven;
|
||||||
import org.apache.maven.eventspy.internal.EventSpyDispatcher;
|
import org.apache.maven.eventspy.internal.EventSpyDispatcher;
|
||||||
import org.apache.maven.execution.MavenExecutionRequest;
|
import org.apache.maven.execution.MavenExecutionRequest;
|
||||||
|
@ -96,7 +96,7 @@ public class MavenCliTest
|
||||||
@Test
|
@Test
|
||||||
public void testPerformProfileActivation() throws ParseException
|
public void testPerformProfileActivation() throws ParseException
|
||||||
{
|
{
|
||||||
final Parser parser = new GnuParser();
|
final CommandLineParser parser = new DefaultParser();
|
||||||
|
|
||||||
final Options options = new Options();
|
final Options options = new Options();
|
||||||
options.addOption( Option.builder( Character.toString( CLIManager.ACTIVATE_PROFILES ) ).hasArg().build() );
|
options.addOption( Option.builder( Character.toString( CLIManager.ACTIVATE_PROFILES ) ).hasArg().build() );
|
||||||
|
@ -122,7 +122,7 @@ public class MavenCliTest
|
||||||
@Test
|
@Test
|
||||||
public void testDetermineProjectActivation() throws ParseException
|
public void testDetermineProjectActivation() throws ParseException
|
||||||
{
|
{
|
||||||
final Parser parser = new GnuParser();
|
final CommandLineParser parser = new DefaultParser();
|
||||||
|
|
||||||
final Options options = new Options();
|
final Options options = new Options();
|
||||||
options.addOption( Option.builder( CLIManager.PROJECT_LIST ).hasArg().build() );
|
options.addOption( Option.builder( CLIManager.PROJECT_LIST ).hasArg().build() );
|
||||||
|
@ -492,6 +492,77 @@ public class MavenCliTest
|
||||||
assertEquals( MessageUtils.stripAnsiCodes( versionOut ), versionOut );
|
assertEquals( MessageUtils.stripAnsiCodes( versionOut ), versionOut );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void populatePropertiesCanContainEqualsSign() throws Exception
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
CliRequest request = new CliRequest( new String[] { "-Dw=x=y", "validate" }, null );
|
||||||
|
|
||||||
|
// Act
|
||||||
|
cli.cli( request );
|
||||||
|
cli.properties( request );
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
assertThat( request.getUserProperties().getProperty( "w" ), is( "x=y" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void populatePropertiesSpace() throws Exception
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
CliRequest request = new CliRequest( new String[] { "-D", "z=2", "validate" }, null );
|
||||||
|
|
||||||
|
// Act
|
||||||
|
cli.cli( request );
|
||||||
|
cli.properties( request );
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
assertThat( request.getUserProperties().getProperty( "z" ), is( "2" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void populatePropertiesShorthand() throws Exception
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
CliRequest request = new CliRequest( new String[] { "-Dx", "validate" }, null );
|
||||||
|
|
||||||
|
// Act
|
||||||
|
cli.cli( request );
|
||||||
|
cli.properties( request );
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
assertThat( request.getUserProperties().getProperty( "x" ), is( "true" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void populatePropertiesMultiple() throws Exception
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
CliRequest request = new CliRequest( new String[] { "-Dx=1", "-Dy", "validate" }, null );
|
||||||
|
|
||||||
|
// Act
|
||||||
|
cli.cli( request );
|
||||||
|
cli.properties( request );
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
assertThat( request.getUserProperties().getProperty( "x" ), is( "1" ) );
|
||||||
|
assertThat( request.getUserProperties().getProperty( "y" ), is( "true" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void populatePropertiesOverwrite() throws Exception
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
CliRequest request = new CliRequest( new String[] { "-Dx", "-Dx=false", "validate" }, null );
|
||||||
|
|
||||||
|
// Act
|
||||||
|
cli.cli( request );
|
||||||
|
cli.properties( request );
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
assertThat( request.getUserProperties().getProperty( "x" ), is( "false" ) );
|
||||||
|
}
|
||||||
|
|
||||||
private MavenProject createMavenProject( String groupId, String artifactId )
|
private MavenProject createMavenProject( String groupId, String artifactId )
|
||||||
{
|
{
|
||||||
MavenProject project = new MavenProject();
|
MavenProject project = new MavenProject();
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -49,7 +49,7 @@ under the License.
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
<maven.compiler.target>1.8</maven.compiler.target>
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
<classWorldsVersion>2.6.0</classWorldsVersion>
|
<classWorldsVersion>2.6.0</classWorldsVersion>
|
||||||
<commonsCliVersion>1.4</commonsCliVersion>
|
<commonsCliVersion>1.5.0</commonsCliVersion>
|
||||||
<commonsLangVersion>3.12.0</commonsLangVersion>
|
<commonsLangVersion>3.12.0</commonsLangVersion>
|
||||||
<junitVersion>5.8.1</junitVersion>
|
<junitVersion>5.8.1</junitVersion>
|
||||||
<mockitoVersion>3.2.0</mockitoVersion>
|
<mockitoVersion>3.2.0</mockitoVersion>
|
||||||
|
|
Loading…
Reference in New Issue