mirror of https://github.com/apache/maven.git
[MNG-6078] Can't overwrite properties which have been defined in
.mvn/maven.config o Reversed the order of properties only to get the properties from command line at the end of the properties list which results in correct behaviour to be able to overwrite properties from command line for properties which have been defined in .mvn/maven.config file.
This commit is contained in:
parent
4604c49ee4
commit
ca43030313
|
@ -27,6 +27,7 @@
|
|||
import org.apache.commons.cli.CommandLine;
|
||||
import org.apache.commons.cli.ParseException;
|
||||
import org.apache.commons.cli.UnrecognizedOptionException;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.apache.maven.BuildAbort;
|
||||
import org.apache.maven.InternalErrorException;
|
||||
import org.apache.maven.Maven;
|
||||
|
@ -542,7 +543,9 @@ else if ( MavenExecutionRequest.CHECKSUM_POLICY_FAIL.equals( cliRequest.request.
|
|||
}
|
||||
}
|
||||
|
||||
private void properties( CliRequest cliRequest )
|
||||
//Needed to make this method package visible to make writing a unit test possible
|
||||
//Maybe it's better to move some of those methods to separate class (SoC).
|
||||
void properties( CliRequest cliRequest )
|
||||
{
|
||||
populateProperties( cliRequest.commandLine, cliRequest.systemProperties, cliRequest.userProperties );
|
||||
}
|
||||
|
@ -1581,9 +1584,14 @@ static void populateProperties( CommandLine commandLine, Properties systemProper
|
|||
if ( commandLine.hasOption( CLIManager.SET_SYSTEM_PROPERTY ) )
|
||||
{
|
||||
String[] defStrs = commandLine.getOptionValues( CLIManager.SET_SYSTEM_PROPERTY );
|
||||
|
||||
|
||||
if ( defStrs != null )
|
||||
{
|
||||
//The following is needed to get precedence
|
||||
//of properties which are defined on command line
|
||||
//over properties defined in the .mvn/maven.config.
|
||||
ArrayUtils.reverse( defStrs );
|
||||
|
||||
for ( String defStr : defStrs )
|
||||
{
|
||||
setCliProperty( defStr, userProperties );
|
||||
|
|
|
@ -21,10 +21,10 @@
|
|||
|
||||
import java.io.File;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.commons.cli.ParseException;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class MavenCliTest
|
||||
extends TestCase
|
||||
{
|
||||
|
@ -81,8 +81,8 @@ public void testMavenConfig()
|
|||
// read .mvn/maven.config
|
||||
cli.initialize( request );
|
||||
cli.cli( request );
|
||||
assertEquals( "multithreaded", request.commandLine.getOptionValue( "builder" ) );
|
||||
assertEquals( "8", request.commandLine.getOptionValue( "threads" ) );
|
||||
assertEquals( "multithreaded", request.commandLine.getOptionValue( CLIManager.BUILDER ) );
|
||||
assertEquals( "8", request.commandLine.getOptionValue( CLIManager.THREADS ) );
|
||||
|
||||
// override from command line
|
||||
request = new CliRequest( new String[] { "--builder", "foobar" }, null );
|
||||
|
@ -107,4 +107,49 @@ public void testMavenConfigInvalid()
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read .mvn/maven.config with the following definitions:
|
||||
* <pre>
|
||||
* -T 3
|
||||
* -Drevision=1.3.0
|
||||
* </pre>
|
||||
* and check if the {@code -T 3} option can be overwritten via command line
|
||||
* argument.
|
||||
* @throws Exception in case of failure.
|
||||
*/
|
||||
public void testMVNConfigurationThreadCanBeOverwrittenViaCommandLine() throws Exception {
|
||||
System.setProperty( MavenCli.MULTIMODULE_PROJECT_DIRECTORY, new File( "src/test/projects/mavenConfigProperties" ).getCanonicalPath() );
|
||||
CliRequest request = new CliRequest( new String[]{ "-T", "5" }, null );
|
||||
|
||||
cli.initialize( request );
|
||||
// read .mvn/maven.config
|
||||
cli.cli( request );
|
||||
|
||||
assertEquals( "5", request.commandLine.getOptionValue( CLIManager.THREADS ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Read .mvn/maven.config with the following definitions:
|
||||
* <pre>
|
||||
* -T 3
|
||||
* -Drevision=1.3.0
|
||||
* </pre>
|
||||
* and check if the {@code -Drevision-1.3.0} option can be overwritten via command line
|
||||
* argument.
|
||||
* @throws Exception
|
||||
*/
|
||||
public void testMVNConfigurationDefinedPropertiesCanBeOverwrittenViaCommandLine() throws Exception {
|
||||
System.setProperty( MavenCli.MULTIMODULE_PROJECT_DIRECTORY, new File( "src/test/projects/mavenConfigProperties" ).getCanonicalPath() );
|
||||
CliRequest request = new CliRequest( new String[]{ "-Drevision=8.1.0"}, null );
|
||||
|
||||
cli.initialize( request );
|
||||
// read .mvn/maven.config
|
||||
cli.cli( request );
|
||||
cli.properties( request );
|
||||
|
||||
String revision = System.getProperty( "revision" );
|
||||
assertEquals( "8.1.0", revision );
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
-T 3
|
||||
-Drevision=1.3.0
|
||||
|
Loading…
Reference in New Issue