maven-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason van Zyl <ja...@takari.io>
Subject Re: maven git commit: .mvn/ for project specific jvm options and maven parameters
Date Sun, 08 Feb 2015 14:04:08 GMT
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 <igor@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
>> <igor@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 <ifedorenko@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 <ifedorenko@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 <ifedorenko@apache.org>
>>>>> Authored: Mon Jan 26 14:22:05 2015 -0500
>>>>> Committer: Igor Fedorenko <ifedorenko@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-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
> 

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-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Mime
View raw message