I think that also works. But I think the script not being executable it makes it clear it's not a script. Whatever we decide I'm again filtering it, just makes debugging painful.
On Feb 8, 2015, at 7:57 AM, Igor Fedorenko <i...@ifedorenko.com> wrote: > I think maintenance overhead and code duplication concerns outweigh > possible confusion an extra file might cause, but I think I have a > better solution. > > What if there was single "real" mvn script and mvnDebug/mvnyjp were just > symlinks pointing back to it? The script will behave differently based > on the script name. Any objections to this plan? > > -- > Regards, > Igor > > On 2015-02-08 6:23, Robert Scholte wrote: >> Igor, Jason, >> >> my concern is not about having shared scripting. If that works, that'll >> be great. >> But from a user perspective I'd like to have a clean bin-folder. Only >> have useful scripts here. >> So my idea would be: when generating the distribution, just merge these >> files to the ones we now have. >> I understand Jasons concern regarding it a bit being less obvious when >> patching, but that assumes there's still some patching to do every now >> and then. >> It shouldn't be too hard to do some filtering and only have useful >> scripts (and disable it if you want to patch/test) >> >> thanks, >> Robert >> >> Op Sat, 07 Feb 2015 15:12:17 +0100 schreef Igor Fedorenko >> <i...@ifedorenko.com>: >> >>> Robert, >>> >>> Can you explain your concerns? I believe it is a common practice to use >>> separate "include" file to keep logic shared by multiple scripts, why do >>> you think we need do it differently? >>> >>> -- >>> Regards, >>> Igor >>> >>> On 2015-02-07 4:24, Robert Scholte wrote: >>>> Igor, >>>> >>>> how about generating these scripts? >>>> I'd prefer to have only useful scripts for the users in the bin >>>> directory. >>>> IIUC the mvn-common.sh is just used by all other scripts and shouldn't >>>> be called by users. >>>> So instead I'd like to see the other scripts being generated, all >>>> including this common script. >>>> >>>> thanks, >>>> Robert >>>> >>>> Op Fri, 06 Feb 2015 22:31:47 +0100 schreef <ifedore...@apache.org>: >>>> >>>>> Repository: maven >>>>> Updated Branches: >>>>> refs/heads/project-basedir 888109c68 -> e91144fbe (forced update) >>>>> >>>>> >>>>> .mvn/ for project specific jvm options and maven parameters >>>>> >>>>> Signed-off-by: Igor Fedorenko <ifedore...@apache.org> >>>>> >>>>> >>>>> Project: http://git-wip-us.apache.org/repos/asf/maven/repo >>>>> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/e91144fb >>>>> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/e91144fb >>>>> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/e91144fb >>>>> >>>>> Branch: refs/heads/project-basedir >>>>> Commit: e91144fbed65c797abb615f1cbcc838271ff36f4 >>>>> Parents: d745f8c >>>>> Author: Igor Fedorenko <ifedore...@apache.org> >>>>> Authored: Mon Jan 26 14:22:05 2015 -0500 >>>>> Committer: Igor Fedorenko <ifedore...@apache.org> >>>>> Committed: Fri Feb 6 15:43:40 2015 -0500 >>>>> >>>>> ---------------------------------------------------------------------- >>>>> apache-maven/src/bin/.gitattributes | 1 + >>>>> apache-maven/src/bin/mvn | 8 ++- >>>>> apache-maven/src/bin/mvn-common.sh | 43 ++++++++++++++ >>>>> apache-maven/src/bin/mvnDebug | 8 ++- >>>>> apache-maven/src/bin/mvnyjp | 23 ++++---- >>>>> apache-maven/src/main/assembly/bin.xml | 1 + >>>>> .../execution/DefaultMavenExecutionRequest.java | 14 +++++ >>>>> .../maven/execution/MavenExecutionRequest.java | 9 +++ >>>>> .../java/org/apache/maven/cli/MavenCli.java | 57 >>>>> ++++++++++++++++++- >>>>> .../java/org/apache/maven/cli/MavenCliTest.java | 59 >>>>> ++++++++++++++++++++ >>>>> .../projects/config-illegal/.mvn/maven.config | 1 + >>>>> .../src/test/projects/config/.mvn/maven.config | 2 + >>>>> 12 files changed, 207 insertions(+), 19 deletions(-) >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/apache-maven/src/bin/.gitattributes >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/apache-maven/src/bin/.gitattributes >>>>> b/apache-maven/src/bin/.gitattributes >>>>> index cc7533f..90eeece 100644 >>>>> --- a/apache-maven/src/bin/.gitattributes >>>>> +++ b/apache-maven/src/bin/.gitattributes >>>>> @@ -1,3 +1,4 @@ >>>>> mvn eol=lf crlf=input >>>>> mvnDebug eol=lf crlf=input >>>>> mvnyjp eol=lf crlf=input >>>>> +mvn-common.sh eol=lf crlf=input >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/apache-maven/src/bin/mvn >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/apache-maven/src/bin/mvn b/apache-maven/src/bin/mvn >>>>> index 1ed3024..f745f4e 100755 >>>>> --- a/apache-maven/src/bin/mvn >>>>> +++ b/apache-maven/src/bin/mvn >>>>> @@ -189,14 +189,18 @@ if $cygwin; then >>>>> CLASSPATH=`cygpath --path --windows "$CLASSPATH"` >>>>> fi >>>>> +. "$M2_HOME/bin/mvn-common.sh" >>>>> +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} >>>>> +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") >>>>> $MAVEN_OPTS" >>>>> + >>>>> # Provide a "standardized" way to retrieve the CLI args that will >>>>> # work with both Windows and non-Windows executions. >>>>> -MAVEN_CMD_LINE_ARGS="$@" >>>>> +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" >>>>> export MAVEN_CMD_LINE_ARGS >>>>> exec "$JAVACMD" \ >>>>> $MAVEN_OPTS \ >>>>> -classpath "${M2_HOME}"/boot/plexus-classworlds-*.jar \ >>>>> "-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \ >>>>> - "-Dmaven.home=${M2_HOME}" \ >>>>> + "-Dmaven.home=${M2_HOME}" >>>>> "-Dmaven.projectBasedir=${MAVEN_PROJECTBASEDIR}" \ >>>>> ${CLASSWORLDS_LAUNCHER} "$@" >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/apache-maven/src/bin/mvn-common.sh >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/apache-maven/src/bin/mvn-common.sh >>>>> b/apache-maven/src/bin/mvn-common.sh >>>>> new file mode 100755 >>>>> index 0000000..b39741b >>>>> --- /dev/null >>>>> +++ b/apache-maven/src/bin/mvn-common.sh >>>>> @@ -0,0 +1,43 @@ >>>>> +#!/bin/sh >>>>> +# >>>>> ---------------------------------------------------------------------------- >>>>> >>>>> >>>>> +# 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. >>>>> +# >>>>> ---------------------------------------------------------------------------- >>>>> >>>>> >>>>> + >>>>> +# TODO ideally, this should contain all logic common to mvn* shell >>>>> scripts >>>>> + >>>>> +# traverses directory structure from process work directory to >>>>> filesystem root >>>>> +# first directory with .mvn subdirectory is considered project base >>>>> directory >>>>> +find_maven_basedir() { >>>>> + local basedir=$(pwd) >>>>> + local wdir=$(pwd) >>>>> + while [ "$wdir" != '/' ] ; do >>>>> + wdir=$(cd $wdir/..; pwd) >>>>> + if [ -d "$wdir"/.mvn ] ; then >>>>> + basedir=$wdir >>>>> + break >>>>> + fi >>>>> + done >>>>> + echo "${basedir}" >>>>> +} >>>>> + >>>>> +# concatenates all lines of a file >>>>> +concat_lines() { >>>>> + if [ -f "$1" ]; then >>>>> + echo "$(tr -s '\n' ' ' < "$1")" >>>>> + fi >>>>> +} >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/apache-maven/src/bin/mvnDebug >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/apache-maven/src/bin/mvnDebug >>>>> b/apache-maven/src/bin/mvnDebug >>>>> index 291f81f..287d20b 100755 >>>>> --- a/apache-maven/src/bin/mvnDebug >>>>> +++ b/apache-maven/src/bin/mvnDebug >>>>> @@ -193,9 +193,13 @@ if $cygwin; then >>>>> CLASSPATH=`cygpath --path --windows "$CLASSPATH"` >>>>> fi >>>>> +. "$M2_HOME/bin/mvn-common.sh" >>>>> +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} >>>>> +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") >>>>> $MAVEN_OPTS" >>>>> + >>>>> # Provide a "standardized" way to retrieve the CLI args that will >>>>> # work with both Windows and non-Windows executions. >>>>> -MAVEN_CMD_LINE_ARGS="$@" >>>>> +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" >>>>> export MAVEN_CMD_LINE_ARGS >>>>> exec "$JAVACMD" \ >>>>> @@ -203,5 +207,5 @@ exec "$JAVACMD" \ >>>>> $MAVEN_DEBUG_OPTS \ >>>>> -classpath "${M2_HOME}"/boot/plexus-classworlds-*.jar \ >>>>> "-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \ >>>>> - "-Dmaven.home=${M2_HOME}" \ >>>>> + "-Dmaven.home=${M2_HOME}" >>>>> "-Dmaven.projectBasedir=${MAVEN_PROJECTBASEDIR}" \ >>>>> ${CLASSWORLDS_LAUNCHER} "$@" >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/apache-maven/src/bin/mvnyjp >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/apache-maven/src/bin/mvnyjp b/apache-maven/src/bin/mvnyjp >>>>> index faf3412..6d5f555 100755 >>>>> --- a/apache-maven/src/bin/mvnyjp >>>>> +++ b/apache-maven/src/bin/mvnyjp >>>>> @@ -34,14 +34,6 @@ >>>>> # MAVEN_SKIP_RC - flag to disable loading of mavenrc files >>>>> # >>>>> ---------------------------------------------------------------------------- >>>>> >>>>> >>>>> -QUOTED_ARGS="" >>>>> -while [ "$1" != "" ] ; do >>>>> - >>>>> - QUOTED_ARGS="$QUOTED_ARGS \"$1\"" >>>>> - shift >>>>> - >>>>> -done >>>>> - >>>>> if [ -z "$MAVEN_SKIP_RC" ] ; then >>>>> if [ -f /etc/mavenrc ] ; then >>>>> @@ -204,11 +196,18 @@ fi >>>>> MAVEN_OPTS="-agentpath:$YJPLIB=onexit=snapshot,onexit=memory,tracing,onlylocal >>>>> >>>>> $MAVEN_OPTS" >>>>> +. "$M2_HOME/bin/mvn-common.sh" >>>>> +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} >>>>> +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") >>>>> $MAVEN_OPTS" >>>>> + >>>>> +# Provide a "standardized" way to retrieve the CLI args that will >>>>> +# work with both Windows and non-Windows executions. >>>>> +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" >>>>> +export MAVEN_CMD_LINE_ARGS >>>>> + >>>>> exec "$JAVACMD" \ >>>>> $MAVEN_OPTS \ >>>>> -classpath "${M2_HOME}"/boot/plexus-classworlds-*.jar \ >>>>> "-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \ >>>>> - "-Dmaven.home=${M2_HOME}" \ >>>>> - ${CLASSWORLDS_LAUNCHER} $QUOTED_ARGS >>>>> - >>>>> - >>>>> + "-Dmaven.home=${M2_HOME}" >>>>> "-Dmaven.projectBasedir=${MAVEN_PROJECTBASEDIR}" \ >>>>> + ${CLASSWORLDS_LAUNCHER} "$@" >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/apache-maven/src/main/assembly/bin.xml >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/apache-maven/src/main/assembly/bin.xml >>>>> b/apache-maven/src/main/assembly/bin.xml >>>>> index b2aa900..6b862f8 100644 >>>>> --- a/apache-maven/src/main/assembly/bin.xml >>>>> +++ b/apache-maven/src/main/assembly/bin.xml >>>>> @@ -74,6 +74,7 @@ under the License. >>>>> <outputDirectory>bin</outputDirectory> >>>>> <includes> >>>>> <include>m2</include> >>>>> + <include>mvn-common.sh</include> >>>>> <include>mvn</include> >>>>> <include>mvnDebug</include> >>>>> <!-- This is so that CI systems can periodically run the >>>>> profiler --> >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git >>>>> a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java >>>>> >>>>> b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java >>>>> >>>>> >>>>> index d88024d..f4439b1 100644 >>>>> --- >>>>> a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java >>>>> >>>>> >>>>> +++ >>>>> b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java >>>>> >>>>> >>>>> @@ -93,6 +93,8 @@ public class DefaultMavenExecutionRequest >>>>> // Request >>>>> // >>>>> ---------------------------------------------------------------------------- >>>>> >>>>> >>>>> + private File projectBasedir; >>>>> + >>>>> private File basedir; >>>>> private List<String> goals; >>>>> @@ -1149,4 +1151,16 @@ public class DefaultMavenExecutionRequest >>>>> this.toolchains = toolchains; >>>>> return this; >>>>> } >>>>> + >>>>> + @Override >>>>> + public void setProjectBaseDirectory( File directory ) >>>>> + { >>>>> + this.projectBasedir = directory; >>>>> + } >>>>> + >>>>> + @Override >>>>> + public File getProjectBaseDirectory() >>>>> + { >>>>> + return projectBasedir; >>>>> + } >>>>> } >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git >>>>> a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java >>>>> >>>>> b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java >>>>> >>>>> >>>>> index 15e2082..0591440 100644 >>>>> --- >>>>> a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java >>>>> >>>>> >>>>> +++ >>>>> b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java >>>>> >>>>> >>>>> @@ -411,4 +411,13 @@ public interface MavenExecutionRequest >>>>> */ >>>>> Map<String, List<ToolchainModel>> getToolchains(); >>>>> + /** >>>>> + * @since 3.2.6 >>>>> + */ >>>>> + void setProjectBaseDirectory( File file ); >>>>> + >>>>> + /** >>>>> + * @since 3.2.6 >>>>> + */ >>>>> + File getProjectBaseDirectory(); >>>>> } >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git >>>>> a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java >>>>> b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java >>>>> index 5b7bd7f..d04cbe0 100644 >>>>> --- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java >>>>> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java >>>>> @@ -23,8 +23,10 @@ import java.io.Console; >>>>> import java.io.File; >>>>> import java.io.FileNotFoundException; >>>>> import java.io.FileOutputStream; >>>>> +import java.io.IOException; >>>>> import java.io.PrintStream; >>>>> import java.util.ArrayList; >>>>> +import java.util.Arrays; >>>>> import java.util.LinkedHashMap; >>>>> import java.util.List; >>>>> import java.util.Map; >>>>> @@ -91,6 +93,8 @@ import >>>>> org.sonatype.plexus.components.sec.dispatcher.SecDispatcher; >>>>> import org.sonatype.plexus.components.sec.dispatcher.SecUtil; >>>>> import >>>>> org.sonatype.plexus.components.sec.dispatcher.model.SettingsSecurity; >>>>> +import com.google.common.base.Charsets; >>>>> +import com.google.common.io.Files; >>>>> import com.google.inject.AbstractModule; >>>>> // TODO: push all common bits back to plexus cli and prepare for >>>>> transition to Guice. We don't need 50 ways to make CLIs >>>>> @@ -105,6 +109,8 @@ public class MavenCli >>>>> public static final String THREADS_DEPRECATED = >>>>> "maven.threads.experimental"; >>>>> + public static final String PROJECT_BASEDIR = >>>>> "maven.projectBasedir"; >>>>> + >>>>> @SuppressWarnings( "checkstyle:constantname" ) >>>>> public static final String userHome = System.getProperty( >>>>> "user.home" ); >>>>> @@ -256,13 +262,27 @@ public class MavenCli >>>>> } >>>>> } >>>>> - private void initialize( CliRequest cliRequest ) >>>>> + void initialize( CliRequest cliRequest ) >>>>> { >>>>> if ( cliRequest.workingDirectory == null ) >>>>> { >>>>> cliRequest.workingDirectory = System.getProperty( >>>>> "user.dir" ); >>>>> } >>>>> + if ( cliRequest.projectBaseDirectory == null ) >>>>> + { >>>>> + String basedirProperty = System.getProperty( >>>>> PROJECT_BASEDIR ); >>>>> + File basedir = basedirProperty != null ? new File( >>>>> basedirProperty ) : new File( "" ); >>>>> + try >>>>> + { >>>>> + cliRequest.projectBaseDirectory = >>>>> basedir.getCanonicalFile(); >>>>> + } >>>>> + catch ( IOException e ) >>>>> + { >>>>> + cliRequest.projectBaseDirectory = >>>>> basedir.getAbsoluteFile(); >>>>> + } >>>>> + } >>>>> + >>>>> // >>>>> // Make sure the Maven home directory is an absolute path to >>>>> save us from confusion with say drive-relative >>>>> // Windows paths. >>>>> @@ -275,7 +295,7 @@ public class MavenCli >>>>> } >>>>> } >>>>> - private void cli( CliRequest cliRequest ) >>>>> + void cli( CliRequest cliRequest ) >>>>> throws Exception >>>>> { >>>>> // >>>>> @@ -286,9 +306,38 @@ public class MavenCli >>>>> CLIManager cliManager = new CLIManager(); >>>>> + List<String> args = new ArrayList<String>(); >>>>> + >>>>> + try >>>>> + { >>>>> + File configFile = new File( >>>>> cliRequest.projectBaseDirectory, ".mvn/maven.config" ); >>>>> + >>>>> + if ( configFile.isFile() ) >>>>> + { >>>>> + for ( String arg : Files.toString( configFile, >>>>> Charsets.UTF_8 ).split( "\\s+" ) ) >>>>> + { >>>>> + args.add( arg ); >>>>> + } >>>>> + >>>>> + CommandLine config = cliManager.parse( args.toArray( >>>>> new String[args.size()] ) ); >>>>> + List<?> unrecongized = config.getArgList(); >>>>> + if ( !unrecongized.isEmpty() ) >>>>> + { >>>>> + throw new ParseException( "Unrecognized >>>>> maven.config entries: " + unrecongized ); >>>>> + } >>>>> + } >>>>> + } >>>>> + catch ( ParseException e ) >>>>> + { >>>>> + System.err.println( "Unable to parse maven.config: " + >>>>> e.getMessage() ); >>>>> + cliManager.displayHelp( System.out ); >>>>> + throw e; >>>>> + } >>>>> + >>>>> try >>>>> { >>>>> - cliRequest.commandLine = cliManager.parse( >>>>> cliRequest.args ); >>>>> + args.addAll( 0, Arrays.asList( cliRequest.args ) ); >>>>> + cliRequest.commandLine = cliManager.parse( args.toArray( >>>>> new String[args.size()] ) ); >>>>> } >>>>> catch ( ParseException e ) >>>>> { >>>>> @@ -1070,6 +1119,7 @@ public class MavenCli >>>>> .setUpdateSnapshots( updateSnapshots ) // default: false >>>>> .setNoSnapshotUpdates( noSnapshotUpdates ) // default: >>>>> false >>>>> .setGlobalChecksumPolicy( globalChecksumPolicy ) // >>>>> default: warn >>>>> + .setProjectBaseDirectory( >>>>> cliRequest.projectBaseDirectory ) >>>>> ; >>>>> if ( alternatePomFile != null ) >>>>> @@ -1319,6 +1369,7 @@ public class MavenCli >>>>> CommandLine commandLine; >>>>> ClassWorld classWorld; >>>>> String workingDirectory; >>>>> + File projectBaseDirectory; >>>>> boolean debug; >>>>> boolean quiet; >>>>> boolean showErrors = true; >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git >>>>> a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java >>>>> b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java >>>>> index 6e06cc5..628ef20 100644 >>>>> --- >>>>> a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java >>>>> +++ >>>>> b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java >>>>> @@ -19,16 +19,39 @@ package org.apache.maven.cli; >>>>> * under the License. >>>>> */ >>>>> +import java.io.File; >>>>> + >>>>> import junit.framework.TestCase; >>>>> +import org.apache.commons.cli.ParseException; >>>>> +import org.apache.maven.cli.MavenCli.CliRequest; >>>>> + >>>>> public class MavenCliTest >>>>> extends TestCase >>>>> { >>>>> private MavenCli cli; >>>>> + private String origBasedir; >>>>> + >>>>> protected void setUp() >>>>> { >>>>> cli = new MavenCli(); >>>>> + origBasedir = System.getProperty( MavenCli.PROJECT_BASEDIR ); >>>>> + } >>>>> + >>>>> + @Override >>>>> + protected void tearDown() >>>>> + throws Exception >>>>> + { >>>>> + if ( origBasedir != null ) >>>>> + { >>>>> + System.setProperty( MavenCli.PROJECT_BASEDIR, >>>>> origBasedir ); >>>>> + } >>>>> + else >>>>> + { >>>>> + System.getProperties().remove( MavenCli.PROJECT_BASEDIR ); >>>>> + } >>>>> + super.tearDown(); >>>>> } >>>>> public void testCalculateDegreeOfConcurrencyWithCoreMultiplier() >>>>> @@ -49,4 +72,40 @@ public class MavenCliTest >>>>> // carry on >>>>> } >>>>> } >>>>> + >>>>> + public void testMavenConfig() >>>>> + throws Exception >>>>> + { >>>>> + System.setProperty( MavenCli.PROJECT_BASEDIR, new File( >>>>> "src/test/projects/config" ).getCanonicalPath() ); >>>>> + CliRequest request = new CliRequest( new String[0], null ); >>>>> + >>>>> + // read .mvn/maven.config >>>>> + cli.initialize( request ); >>>>> + cli.cli( request ); >>>>> + assertEquals( "multithreaded", >>>>> request.commandLine.getOptionValue( "builder" ) ); >>>>> + assertEquals( "8", request.commandLine.getOptionValue( >>>>> "threads" ) ); >>>>> + >>>>> + // override from command line >>>>> + request = new CliRequest( new String[] { "--builder", >>>>> "foobar" }, null ); >>>>> + cli.cli( request ); >>>>> + assertEquals( "foobar", request.commandLine.getOptionValue( >>>>> "builder" ) ); >>>>> + } >>>>> + >>>>> + public void testMavenConfigInvalid() >>>>> + throws Exception >>>>> + { >>>>> + System.setProperty( MavenCli.PROJECT_BASEDIR, new File( >>>>> "src/test/projects/config-illegal" ).getCanonicalPath() ); >>>>> + CliRequest request = new CliRequest( new String[0], null ); >>>>> + >>>>> + cli.initialize( request ); >>>>> + try >>>>> + { >>>>> + cli.cli( request ); >>>>> + fail(); >>>>> + } >>>>> + catch ( ParseException expected ) >>>>> + { >>>>> + >>>>> + } >>>>> + } >>>>> } >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/maven-embedder/src/test/projects/config-illegal/.mvn/maven.config >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git >>>>> a/maven-embedder/src/test/projects/config-illegal/.mvn/maven.config >>>>> b/maven-embedder/src/test/projects/config-illegal/.mvn/maven.config >>>>> new file mode 100644 >>>>> index 0000000..8541464 >>>>> --- /dev/null >>>>> +++ b/maven-embedder/src/test/projects/config-illegal/.mvn/maven.config >>>>> @@ -0,0 +1 @@ >>>>> +deploy >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/maven/blob/e91144fb/maven-embedder/src/test/projects/config/.mvn/maven.config >>>>> >>>>> >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/maven-embedder/src/test/projects/config/.mvn/maven.config >>>>> b/maven-embedder/src/test/projects/config/.mvn/maven.config >>>>> new file mode 100644 >>>>> index 0000000..3d0f13b >>>>> --- /dev/null >>>>> +++ b/maven-embedder/src/test/projects/config/.mvn/maven.config >>>>> @@ -0,0 +1,2 @@ >>>>> +-T8 --builder >>>>> + multithreaded >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>> For additional commands, e-mail: dev-h...@maven.apache.org >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >> For additional commands, e-mail: dev-h...@maven.apache.org >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > For additional commands, e-mail: dev-h...@maven.apache.org > Thanks, Jason ---------------------------------------------------------- Jason van Zyl Founder, Takari and Apache Maven http://twitter.com/jvanzyl http://twitter.com/takari_io --------------------------------------------------------- A language that doesn’t affect the way you think about programming is not worth knowing. -- Alan Perlis --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org For additional commands, e-mail: dev-h...@maven.apache.org