Return-Path: X-Original-To: apmail-maven-dev-archive@www.apache.org Delivered-To: apmail-maven-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1CB8C17F6B for ; Sun, 8 Feb 2015 12:57:32 +0000 (UTC) Received: (qmail 26434 invoked by uid 500); 8 Feb 2015 12:57:31 -0000 Delivered-To: apmail-maven-dev-archive@maven.apache.org Received: (qmail 26358 invoked by uid 500); 8 Feb 2015 12:57:31 -0000 Mailing-List: contact dev-help@maven.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Maven Developers List" Reply-To: "Maven Developers List" Delivered-To: mailing list dev@maven.apache.org Received: (qmail 26345 invoked by uid 99); 8 Feb 2015 12:57:31 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 08 Feb 2015 12:57:31 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [216.86.168.182] (HELO mxout-07.mxes.net) (216.86.168.182) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 08 Feb 2015 12:57:26 +0000 Received: from mpb.ifedorenko.com (unknown [104.222.116.114]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by smtp.mxes.net (Postfix) with ESMTPSA id 7B83022E1F4 for ; Sun, 8 Feb 2015 07:57:04 -0500 (EST) Message-ID: <54D75D1F.60903@ifedorenko.com> Date: Sun, 08 Feb 2015 07:57:03 -0500 From: Igor Fedorenko User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: dev@maven.apache.org Subject: Re: maven git commit: .mvn/ for project specific jvm options and maven parameters References: <9dad4bc2d12b45c897b14f0d0abded8b@git.apache.org> <54D61D41.30004@ifedorenko.com> In-Reply-To: Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org 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 > : > >> 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 : >>> >>>> 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 >>>> >>>> >>>> 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 >>>> Authored: Mon Jan 26 14:22:05 2015 -0500 >>>> Committer: Igor Fedorenko >>>> 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. >>>> bin >>>> >>>> m2 >>>> + mvn-common.sh >>>> mvn >>>> mvnDebug >>>> >>>> >>>> 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 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> 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 args = new ArrayList(); >>>> + >>>> + 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-unsubscribe@maven.apache.org >>> For additional commands, e-mail: dev-help@maven.apache.org >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org >> For additional commands, e-mail: dev-help@maven.apache.org > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org > For additional commands, e-mail: dev-help@maven.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org For additional commands, e-mail: dev-help@maven.apache.org