[ http://jira.codehaus.org/browse/MNG-2200?page=all ]

John Casey updated MNG-2200:
----------------------------

    Fix Version: 2.1

> [m2.0.3] Embedder - no way to override the "localRepository", .start() and 
> alignWithUserInstallation broken
> -----------------------------------------------------------------------------------------------------------
>
>          Key: MNG-2200
>          URL: http://jira.codehaus.org/browse/MNG-2200
>      Project: Maven 2
>         Type: Bug

>   Components: Embedding
>     Versions: 2.0.3
>  Environment: All
>     Reporter: Dan Rollo
>      Fix For: 2.1

>
>
> There is no way to override the "localRepository" used by MavenEmbedder.
> Some code from MavenEmbedder.java:
>     public void setLocalRepositoryDirectory( File localRepositoryDirectory )
>     {
>         this.localRepositoryDirectory = localRepositoryDirectory;
>     }
> ...
>     public void start()
>         throws MavenEmbedderException
>     {
>         detectUserInstallation();
> ...
>     private void detectUserInstallation()
>     {
>         if ( new File( userHome, ".m2" ).exists() )
>         {
>             alignWithUserInstallation = true;
>         }
>     }
>     /**
>      * Create the Settings that will be used with the embedder. If we are 
> aligning with the user
>      * installation then we lookup the standard settings builder and use that 
> to create our
>      * settings. Otherwise we constructs a settings object and populate the 
> information
>      * ourselves.
>      *
>      * @throws MavenEmbedderException
>      * @throws ComponentLookupException
>      */
>     private void createMavenSettings()
>         throws MavenEmbedderException, ComponentLookupException
>     {
>         if ( alignWithUserInstallation )
>         {
>             // 
> ----------------------------------------------------------------------
>             // We will use the standard method for creating the settings. This
>             // method reproduces the method of building the settings from the 
> CLI
>             // mode of operation. 
>             // 
> ----------------------------------------------------------------------
>             settingsBuilder = (MavenSettingsBuilder) embedder.lookup( 
> MavenSettingsBuilder.ROLE );
> ...
>         }
>         else
>         {
>             if ( localRepository == null )
>             {
>                 throw new IllegalArgumentException( "When not aligning with a 
> user install you must specify a local repository  location using the 
> setLocalRepositoryDirectory( File ) method." );
>             }
>             settings = new Settings();
>             settings.setLocalRepository( 
> localRepositoryDirectory.getAbsolutePath() );
> ...
> The detectUserInstallation() method will never allow me to override the 
> localRepository if an ".m2" user
> directory exists (even if I call setAlignWithUserInstallation(false) and/or 
> call setLocalRepositoryDirectory() before calling start() ). The current 
> logic in the start() method always sets the field "alignWithUserInstallation" 
> to true
> if ".m2" exists.
> Jason has confirmed this is a bug (on the maven user list), which he is 
> working on, but on a major branch due to be merged at some point in the 
> future. That said, I think this issue can easily be fixed quickly with the 
> code change below applied to the method detectUserInstallation():
>     private void detectUserInstallation()
>     {
>         if ( new File( userHome, ".m2" ).exists() )
>         {
>             alignWithUserInstallation = true;
>         }
>     }
> changed to (added another condition in the if):
>     private void detectUserInstallation()
>     {
>         if ( new File( userHome, ".m2" ).exists() && localRepositoryDirectory 
> == null )
>         {
>             alignWithUserInstallation = true;
>         }
>     }
> If the next Embedder release will occur very soon and will include Jason's 
> fixes, this bug is likely already fixed. However, if the merging of Jason's 
> branch is a long way off, please consider fixing this bug for the next 
> release.
> thanks
> Dan

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to