Repository: maven Updated Branches: refs/heads/master d745f8c47 -> 2d34e67ee
First pass at cleaning up MavenExecutionRequestPopulator and its use. Push MavenExecutionRequestPopulator down to only operate in the MavenCli. Two of the three methods were already called from MavenCli so now all of them are. In the process I deleted a bunch of code and pursue my quest to remove Settings from the core in order to make a general configuration mechanism that can be plugged into the core via the MavenCli. Also removed the requirement of the LegacyRepositorySystem in the DefaultMavenExecutionRequestPopulator which breaks another tie with the legacy code. I took the bits that were needed and a lot of the code, after tracing through it, is redundant so it has been deleted. Turning off: injectMirror( request, request.getRemoteRepositories(), request.getMirrors() ); injectMirror( request, request.getPluginArtifactRepositories(), request.getMirrors() ); in DefaultMavenExecutionRequestPopulator Results : Failed tests: MavenITmng4190MirrorRepoMergingTest>AbstractMavenIntegrationTestCase.runTest:220->testit:76 null expected:<[1]> but was:<[4]> Tests in error: MavenITmng4991NonProxyHostsTest>AbstractMavenIntegrationTestCase.runTest:220->testit:89 û Verification MavenITmng4963ParentResolutionFromMirrorTest>AbstractMavenIntegrationTestCase.runTest:220->testit:58 û Verification There is mirror evaluation code in DefaultMaven:newRepositorySession( MavenExecutionRequest request ) which appears to duplicate this logic but not quite enough for the ITs to pass. --- Turning off: injectProxy( request.getRemoteRepositories(), request.getProxies() ); injectProxy( request.getPluginArtifactRepositories(), request.getProxies() ); in DefaultMavenExecutionRequestPopulator Result: The ITs pass So the code is not needed so it has been deleted. --- Turning off: injectProxy( request.getRemoteRepositories(), request.getProxies() ); injectProxy( request.getPluginArtifactRepositories(), request.getProxies() ); injectAuthentication( request.getRemoteRepositories(), request.getServers() ); injectAuthentication( request.getPluginArtifactRepositories(), request.getServers() ); in DefaultMavenExecutionRequestPopulator Result: The ITs pass The code in DefaultMaven:newRepositorySession( MavenExecutionRequest request ) appears to populate proxies and authentication correctly. The injectAuthentication code has been deleted. --- This is also perfunctory in DefaultMavenExecutionRequestPopulator after tracing through it: request.setRemoteRepositories( getEffectiveRepositories( request, request.getRemoteRepositories() ) ); request.setPluginArtifactRepositories( getEffectiveRepositories( request, request.getPluginArtifactRepositories() ) ); Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/2d34e67e Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/2d34e67e Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/2d34e67e Branch: refs/heads/master Commit: 2d34e67eedb2dd8e9856beae7ccee53f62f1a1ee Parents: d745f8c Author: Jason van Zyl <ja...@tesla.io> Authored: Sun Feb 8 08:41:05 2015 -0500 Committer: Jason van Zyl <ja...@tesla.io> Committed: Sun Feb 8 22:26:48 2015 -0500 ---------------------------------------------------------------------- .../java/org/apache/maven/DefaultMaven.java | 12 +- .../DefaultMavenExecutionRequestPopulator.java | 477 +++++++++++++++++-- .../maven/execution/MavenExecutionRequest.java | 4 + ...faultMavenExecutionRequestPopulatorTest.java | 2 +- .../java/org/apache/maven/cli/MavenCli.java | 15 +- 5 files changed, 463 insertions(+), 47 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/2d34e67e/maven-core/src/main/java/org/apache/maven/DefaultMaven.java ---------------------------------------------------------------------- diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java index 8fc35e8..ee82c1d 100644 --- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java @@ -41,8 +41,6 @@ import org.apache.maven.eventspy.internal.EventSpyDispatcher; import org.apache.maven.execution.DefaultMavenExecutionResult; import org.apache.maven.execution.ExecutionEvent; import org.apache.maven.execution.MavenExecutionRequest; -import org.apache.maven.execution.MavenExecutionRequestPopulationException; -import org.apache.maven.execution.MavenExecutionRequestPopulator; import org.apache.maven.execution.MavenExecutionResult; import org.apache.maven.execution.MavenSession; import org.apache.maven.execution.ProjectDependencyGraph; @@ -117,9 +115,6 @@ public class DefaultMaven protected PlexusContainer container; @Requirement - MavenExecutionRequestPopulator populator; - - @Requirement private ExecutionEventCatapult eventCatapult; @Requirement @@ -146,22 +141,19 @@ public class DefaultMaven @Requirement private SessionScope sessionScope; + @Override public MavenExecutionResult execute( MavenExecutionRequest request ) { MavenExecutionResult result; try { - result = doExecute( populator.populateDefaults( request ) ); + result = doExecute( request ); } catch ( OutOfMemoryError e ) { result = addExceptionToResult( new DefaultMavenExecutionResult(), e ); } - catch ( MavenExecutionRequestPopulationException e ) - { - result = addExceptionToResult( new DefaultMavenExecutionResult(), e ); - } catch ( RuntimeException e ) { result = http://git-wip-us.apache.org/repos/asf/maven/blob/2d34e67e/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulator.java ---------------------------------------------------------------------- diff --git a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulator.java b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulator.java index bb794ee..dc2521c 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulator.java +++ b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulator.java @@ -20,7 +20,10 @@ package org.apache.maven.execution; */ import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -30,16 +33,29 @@ import java.util.Set; import javax.inject.Inject; import javax.inject.Named; +import org.apache.maven.RepositoryUtils; +import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.InvalidRepositoryException; +import org.apache.maven.artifact.metadata.ArtifactMetadata; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; +import org.apache.maven.artifact.repository.MavenArtifactRepository; +import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; +import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout2; import org.apache.maven.bridge.MavenRepositorySystem; import org.apache.maven.repository.RepositorySystem; +// +// All of this needs to go away and be couched in terms of the execution request +// import org.apache.maven.settings.Mirror; import org.apache.maven.settings.Proxy; import org.apache.maven.settings.Repository; import org.apache.maven.settings.Server; import org.apache.maven.settings.Settings; import org.apache.maven.settings.SettingsUtils; +// +// Settings in core +// import org.apache.maven.toolchain.model.PersistedToolchains; import org.apache.maven.toolchain.model.ToolchainModel; import org.codehaus.plexus.util.StringUtils; @@ -49,12 +65,16 @@ public class DefaultMavenExecutionRequestPopulator implements MavenExecutionRequestPopulator { - private final RepositorySystem repositorySystem; + private static final String WILDCARD = "*"; + private static final String EXTERNAL_WILDCARD = "external:*"; + + private final Map<String, ArtifactRepositoryLayout> layouts; + @Inject - public DefaultMavenExecutionRequestPopulator( RepositorySystem repositorySystem ) + public DefaultMavenExecutionRequestPopulator( RepositorySystem repositorySystem, Map<String, ArtifactRepositoryLayout> layouts ) { - this.repositorySystem = repositorySystem; + this.layouts = layouts; } @Override @@ -182,6 +202,29 @@ public class DefaultMavenExecutionRequestPopulator return request; } + @Override + public MavenExecutionRequest populateDefaults( MavenExecutionRequest request ) + throws MavenExecutionRequestPopulationException + { + baseDirectory( request ); + + localRepository( request ); + + populateDefaultPluginGroups( request ); + + injectDefaultRepositories( request ); + + injectDefaultPluginRepositories( request ); + + processRepositoriesInSettings( request ); + + return request; + } + + // + // + // + private void populateDefaultPluginGroups( MavenExecutionRequest request ) { request.addPluginGroup( "org.apache.maven.plugins" ); @@ -197,9 +240,9 @@ public class DefaultMavenExecutionRequestPopulator { try { - request.addRemoteRepository( repositorySystem.createDefaultRemoteRepository() ); + request.addRemoteRepository( createDefaultRemoteRepository( request ) ); } - catch ( InvalidRepositoryException e ) + catch ( Exception e ) { throw new MavenExecutionRequestPopulationException( "Cannot create default remote repository.", e ); } @@ -215,15 +258,37 @@ public class DefaultMavenExecutionRequestPopulator { try { - request.addPluginArtifactRepository( repositorySystem.createDefaultRemoteRepository() ); + request.addPluginArtifactRepository( createDefaultRemoteRepository( request ) ); } - catch ( InvalidRepositoryException e ) + catch ( Exception e ) { throw new MavenExecutionRequestPopulationException( "Cannot create default remote repository.", e ); } } } + private ArtifactRepository createDefaultRemoteRepository( MavenExecutionRequest request ) + throws Exception + { + return createRepository( request, RepositorySystem.DEFAULT_REMOTE_REPO_URL, RepositorySystem.DEFAULT_REMOTE_REPO_ID, + true, ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY, false, + ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY, + ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN ); + } + + private ArtifactRepository createRepository( MavenExecutionRequest request, String url, String repositoryId, boolean releases, + String releaseUpdates, boolean snapshots, String snapshotUpdates, + String checksumPolicy ) throws Exception + { + ArtifactRepositoryPolicy snapshotsPolicy = + new ArtifactRepositoryPolicy( snapshots, snapshotUpdates, checksumPolicy ); + + ArtifactRepositoryPolicy releasesPolicy = + new ArtifactRepositoryPolicy( releases, releaseUpdates, checksumPolicy ); + + return createArtifactRepository( repositoryId, url, "default", snapshotsPolicy, releasesPolicy, request ); + } + private Set<String> getRepoIds( List<ArtifactRepository> repositories ) { Set<String> repoIds = new HashSet<String>(); @@ -242,17 +307,48 @@ public class DefaultMavenExecutionRequestPopulator private void processRepositoriesInSettings( MavenExecutionRequest request ) throws MavenExecutionRequestPopulationException { - repositorySystem.injectMirror( request.getRemoteRepositories(), request.getMirrors() ); - repositorySystem.injectProxy( request.getRemoteRepositories(), request.getProxies() ); - repositorySystem.injectAuthentication( request.getRemoteRepositories(), request.getServers() ); - - request.setRemoteRepositories( repositorySystem.getEffectiveRepositories( request.getRemoteRepositories() ) ); - - repositorySystem.injectMirror( request.getPluginArtifactRepositories(), request.getMirrors() ); - repositorySystem.injectProxy( request.getPluginArtifactRepositories(), request.getProxies() ); - repositorySystem.injectAuthentication( request.getPluginArtifactRepositories(), request.getServers() ); - - request.setPluginArtifactRepositories( repositorySystem.getEffectiveRepositories( request.getPluginArtifactRepositories() ) ); + // + // <settings> + // <mirrors> + // <mirror> + // <id>central</id> + // <!-- NOTE: We need to try and use the proper host name/ip as Java generally ignores proxies for "localhost" --> + // <url>http://10.0.1.34:62247/</url> + // <mirrorOf>central</mirrorOf> + // </mirror> + // </mirrors> + // <proxies> + // <proxy> + // <active>true</active> + // <protocol>http</protocol> + // <host>localhost</host> + // <port>62248</port> + // <nonProxyHosts>10.0.1.34</nonProxyHosts> + // </proxy> + // </proxies> + // <profiles> + // <profile> + // <id>it-defaults</id> + // <!-- disable central override and use built-in values --> + // </profile> + // </profiles> + // <activeProfiles> + // <activeProfile>it-defaults</activeProfile> + // </activeProfiles> + // </settings> + // + // Turns + // + // http://repo1.maven.org/maven2 + // + // to + // + // http://10.0.1.34:62247/ + // + // Not sure why the DefaultMirrorSelector doesn't do this... + // + injectMirror( request, request.getRemoteRepositories(), request.getMirrors() ); + injectMirror( request, request.getPluginArtifactRepositories(), request.getMirrors() ); } private void localRepository( MavenExecutionRequest request ) @@ -281,7 +377,7 @@ public class DefaultMavenExecutionRequestPopulator // Artifact Transfer Mechanism // ------------------------------------------------------------------------ - public ArtifactRepository createLocalRepository( MavenExecutionRequest request ) + private ArtifactRepository createLocalRepository( MavenExecutionRequest request ) throws MavenExecutionRequestPopulationException { String localRepositoryPath = null; @@ -298,9 +394,9 @@ public class DefaultMavenExecutionRequestPopulator try { - return repositorySystem.createLocalRepository( new File( localRepositoryPath ) ); + return createLocalRepository( request, new File( localRepositoryPath ) ); } - catch ( InvalidRepositoryException e ) + catch ( Exception e ) { throw new MavenExecutionRequestPopulationException( "Cannot create local repository.", e ); } @@ -313,23 +409,344 @@ public class DefaultMavenExecutionRequestPopulator request.setBaseDirectory( request.getPom().getAbsoluteFile().getParentFile() ); } } + + // + // Code taken from LegacyRepositorySystem + // + + private ArtifactRepository createLocalRepository( MavenExecutionRequest request, File localRepository ) + throws Exception + { + return createRepository( request, "file://" + localRepository.toURI().getRawPath(), + RepositorySystem.DEFAULT_LOCAL_REPO_ID, true, + ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, true, + ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, + ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE ); + } + + private void injectMirror( MavenExecutionRequest request, List<ArtifactRepository> repositories, List<Mirror> mirrors ) + { + if ( repositories != null && mirrors != null ) + { + for ( ArtifactRepository repository : repositories ) + { + Mirror mirror = getMirror( repository, mirrors ); + injectMirror( request, repository, mirror ); + } + } + } - public MavenExecutionRequest populateDefaults( MavenExecutionRequest request ) - throws MavenExecutionRequestPopulationException + private void injectMirror( MavenExecutionRequest request, ArtifactRepository repository, Mirror mirror ) { - baseDirectory( request ); + if ( mirror != null ) + { + ArtifactRepository original = + createArtifactRepository( repository.getId(), repository.getUrl(), repository.getLayout(), + repository.getSnapshots(), repository.getReleases(), request ); - localRepository( request ); + repository.setMirroredRepositories( Collections.singletonList( original ) ); - populateDefaultPluginGroups( request ); + repository.setId( mirror.getId() ); + repository.setUrl( mirror.getUrl() ); - injectDefaultRepositories( request ); + if ( StringUtils.isNotEmpty( mirror.getLayout() ) ) + { + repository.setLayout( getLayout( mirror.getLayout() ) ); + } + } + } + + private ArtifactRepositoryLayout getLayout( String id ) + { + ArtifactRepositoryLayout layout = layouts.get( id ); - injectDefaultPluginRepositories( request ); + if ( layout == null ) + { + layout = new UnknownRepositoryLayout( id, layouts.get( "default" ) ); + } - processRepositoriesInSettings( request ); + return layout; + } - return request; + /** + * In the future, the legacy system might encounter repository types for which no layout components exists because + * the actual communication with the repository happens via a repository connector. As a minimum, the legacy system + * needs to retain the id of this layout so that the content type of the remote repository can still be accurately + * described. + */ + private static class UnknownRepositoryLayout + implements ArtifactRepositoryLayout + { + + private final String id; + + private final ArtifactRepositoryLayout fallback; + + public UnknownRepositoryLayout( String id, ArtifactRepositoryLayout fallback ) + { + this.id = id; + this.fallback = fallback; + } + + @Override + public String getId() + { + return id; + } + + @Override + public String pathOf( Artifact artifact ) + { + return fallback.pathOf( artifact ); + } + + @Override + public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository ) + { + return fallback.pathOfLocalRepositoryMetadata( metadata, repository ); + } + + @Override + public String pathOfRemoteRepositoryMetadata( ArtifactMetadata metadata ) + { + return fallback.pathOfRemoteRepositoryMetadata( metadata ); + } + + @Override + public String toString() + { + return getId(); + } + } + + // + // ArtifactRepositoryFactory + // + private ArtifactRepository createArtifactRepository( String id, String url, String layoutId, + ArtifactRepositoryPolicy snapshots, + ArtifactRepositoryPolicy releases, + MavenExecutionRequest request ) + throws Exception + { + ArtifactRepositoryLayout layout = layouts.get( layoutId ); + + checkLayout( id, layoutId, layout ); + + return createArtifactRepository( id, url, layout, snapshots, releases, request ); + } + + private ArtifactRepository createArtifactRepository( String id, String url, + ArtifactRepositoryLayout repositoryLayout, + ArtifactRepositoryPolicy snapshots, + ArtifactRepositoryPolicy releases, + MavenExecutionRequest request ) + { + String globalChecksumPolicy = request.getGlobalChecksumPolicy(); + + if ( snapshots == null ) + { + snapshots = new ArtifactRepositoryPolicy(); + } + + if ( releases == null ) + { + releases = new ArtifactRepositoryPolicy(); + } + + if ( globalChecksumPolicy != null ) + { + snapshots.setChecksumPolicy( globalChecksumPolicy ); + releases.setChecksumPolicy( globalChecksumPolicy ); + } + + ArtifactRepository repository; + if ( repositoryLayout instanceof ArtifactRepositoryLayout2 ) + { + repository = + ( (ArtifactRepositoryLayout2) repositoryLayout ).newMavenArtifactRepository( id, url, snapshots, + releases ); + } + else + { + repository = new MavenArtifactRepository( id, url, repositoryLayout, snapshots, releases ); + } + + return repository; + } + + private void checkLayout( String repositoryId, String layoutId, ArtifactRepositoryLayout layout ) + throws Exception + { + if ( layout == null ) + { + throw new Exception( String.format( "Cannot find ArtifactRepositoryLayout instance for: %s %s", layoutId, repositoryId ) ); + } } + + // + // MirrorSelector + // + private Mirror getMirror( ArtifactRepository repository, List<Mirror> mirrors ) + { + String repoId = repository.getId(); + + if ( repoId != null && mirrors != null ) + { + for ( Mirror mirror : mirrors ) + { + if ( repoId.equals( mirror.getMirrorOf() ) && matchesLayout( repository, mirror ) ) + { + return mirror; + } + } + + for ( Mirror mirror : mirrors ) + { + if ( matchPattern( repository, mirror.getMirrorOf() ) && matchesLayout( repository, mirror ) ) + { + return mirror; + } + } + } + + return null; + } + + /** + * This method checks if the pattern matches the originalRepository. Valid patterns: * = + * everything external:* = everything not on the localhost and not file based. repo,repo1 = repo + * or repo1 *,!repo1 = everything except repo1 + * + * @param originalRepository to compare for a match. + * @param pattern used for match. Currently only '*' is supported. + * @return true if the repository is a match to this pattern. + */ + private boolean matchPattern( ArtifactRepository originalRepository, String pattern ) + { + boolean result = false; + String originalId = originalRepository.getId(); + + // simple checks first to short circuit processing below. + if ( WILDCARD.equals( pattern ) || pattern.equals( originalId ) ) + { + result = true; + } + else + { + // process the list + String[] repos = pattern.split( "," ); + for ( String repo : repos ) + { + repo = repo.trim(); + // see if this is a negative match + if ( repo.length() > 1 && repo.startsWith( "!" ) ) + { + if ( repo.substring( 1 ).equals( originalId ) ) + { + // explicitly exclude. Set result and stop processing. + result = false; + break; + } + } + // check for exact match + else if ( repo.equals( originalId ) ) + { + result = true; + break; + } + // check for external:* + else if ( EXTERNAL_WILDCARD.equals( repo ) && isExternalRepo( originalRepository ) ) + { + result = true; + // don't stop processing in case a future segment explicitly excludes this repo + } + else if ( WILDCARD.equals( repo ) ) + { + result = true; + // don't stop processing in case a future segment explicitly excludes this repo + } + } + } + return result; + } + + /** + * Checks the URL to see if this repository refers to an external repository + * + * @param originalRepository + * @return true if external. + */ + private boolean isExternalRepo( ArtifactRepository originalRepository ) + { + try + { + URL url = new URL( originalRepository.getUrl() ); + return !( url.getHost().equals( "localhost" ) || url.getHost().equals( "127.0.0.1" ) + || url.getProtocol().equals( "file" ) ); + } + catch ( MalformedURLException e ) + { + // bad url just skip it here. It should have been validated already, but the wagon lookup will deal with it + return false; + } + } + + private boolean matchesLayout( ArtifactRepository repository, Mirror mirror ) + { + return matchesLayout( RepositoryUtils.getLayout( repository ), mirror.getMirrorOfLayouts() ); + } + + /** + * Checks whether the layouts configured for a mirror match with the layout of the repository. + * + * @param repoLayout The layout of the repository, may be {@code null}. + * @param mirrorLayout The layouts supported by the mirror, may be {@code null}. + * @return {@code true} if the layouts associated with the mirror match the layout of the original repository, + * {@code false} otherwise. + */ + private boolean matchesLayout( String repoLayout, String mirrorLayout ) + { + boolean result = false; + + // simple checks first to short circuit processing below. + if ( StringUtils.isEmpty( mirrorLayout ) || WILDCARD.equals( mirrorLayout ) ) + { + result = true; + } + else if ( mirrorLayout.equals( repoLayout ) ) + { + result = true; + } + else + { + // process the list + String[] layouts = mirrorLayout.split( "," ); + for ( String layout : layouts ) + { + // see if this is a negative match + if ( layout.length() > 1 && layout.startsWith( "!" ) ) + { + if ( layout.substring( 1 ).equals( repoLayout ) ) + { + // explicitly exclude. Set result and stop processing. + result = false; + break; + } + } + // check for exact match + else if ( layout.equals( repoLayout ) ) + { + result = true; + break; + } + else if ( WILDCARD.equals( layout ) ) + { + result = true; + // don't stop processing in case a future segment explicitly excludes this repo + } + } + } + return result; + } } http://git-wip-us.apache.org/repos/asf/maven/blob/2d34e67e/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..2b2a1d8 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 @@ -29,9 +29,13 @@ import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; import org.apache.maven.model.Profile; import org.apache.maven.project.ProjectBuildingRequest; +// +// These settings values need to be removed and pushed down into a provider of configuration information +// import org.apache.maven.settings.Mirror; import org.apache.maven.settings.Proxy; import org.apache.maven.settings.Server; +// import org.apache.maven.toolchain.model.ToolchainModel; import org.codehaus.plexus.logging.Logger; import org.eclipse.aether.RepositoryCache; http://git-wip-us.apache.org/repos/asf/maven/blob/2d34e67e/maven-core/src/test/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulatorTest.java ---------------------------------------------------------------------- diff --git a/maven-core/src/test/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulatorTest.java b/maven-core/src/test/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulatorTest.java index 5019c7f..67f4dee 100644 --- a/maven-core/src/test/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulatorTest.java +++ b/maven-core/src/test/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulatorTest.java @@ -33,7 +33,7 @@ public class DefaultMavenExecutionRequestPopulatorTest extends TestCase { DefaultMavenExecutionRequestPopulator testee = - new DefaultMavenExecutionRequestPopulator( new TestRepositorySystem() ); + new DefaultMavenExecutionRequestPopulator( new TestRepositorySystem(), null ); public void testPluginRepositoryInjection() throws Exception http://git-wip-us.apache.org/repos/asf/maven/blob/2d34e67e/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..35ccbd2 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 @@ -56,6 +56,7 @@ import org.apache.maven.exception.ExceptionSummary; import org.apache.maven.execution.DefaultMavenExecutionRequest; import org.apache.maven.execution.ExecutionListener; import org.apache.maven.execution.MavenExecutionRequest; +import org.apache.maven.execution.MavenExecutionRequestPopulationException; import org.apache.maven.execution.MavenExecutionRequestPopulator; import org.apache.maven.execution.MavenExecutionResult; import org.apache.maven.lifecycle.LifecycleExecutionException; @@ -410,6 +411,7 @@ public class MavenCli container = new DefaultPlexusContainer( cc, new AbstractModule() { + @Override protected void configure() { bind( ILoggerFactory.class ).toInstance( slf4jLoggerFactory ); @@ -590,11 +592,13 @@ public class MavenCli } } - private int execute( CliRequest cliRequest ) + private int execute( CliRequest cliRequest ) throws MavenExecutionRequestPopulationException { - eventSpyDispatcher.onEvent( cliRequest.request ); + MavenExecutionRequest request = executionRequestPopulator.populateDefaults( cliRequest.request ); + + eventSpyDispatcher.onEvent( request ); - MavenExecutionResult result = maven.execute( cliRequest.request ); + MavenExecutionResult result = maven.execute( request ); eventSpyDispatcher.onEvent( result ); @@ -1160,14 +1164,13 @@ public class MavenCli if ( localRepoProperty == null ) { localRepoProperty = request.getSystemProperties().getProperty( MavenCli.LOCAL_REPO_PROPERTY ); - } - + } + if ( localRepoProperty != null ) { request.setLocalRepositoryPath( localRepoProperty ); } - request.setCacheNotFound( true ); request.setCacheTransferError( false );