[ 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