maven-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Igor Fedorenko <i...@ifedorenko.com>
Subject Re: maven git commit: .mvn/ for project specific jvm options and maven parameters
Date Sun, 08 Feb 2015 12:57:03 GMT
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


Mime
View raw message