diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java index beef954f04..54800d058b 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java @@ -79,6 +79,7 @@ import org.apache.maven.realm.MavenRealmManager; import org.apache.maven.realm.RealmManagementException; import org.apache.maven.reporting.MavenReport; import org.apache.maven.repository.MavenRepositorySystem; +import org.apache.maven.repository.VersionNotFoundException; import org.apache.maven.shared.model.InterpolatorProperty; import org.apache.maven.shared.model.ModelMarshaller; import org.apache.maven.shared.model.ModelProperty; @@ -399,10 +400,11 @@ public class DefaultPluginManager coreArtifactFilterManager.getCoreArtifactFilter(), project ); } - catch ( InvalidDependencyVersionException e ) + catch ( VersionNotFoundException e ) { + InvalidDependencyVersionException ee = new InvalidDependencyVersionException( e.getProjectId(), e.getDependency(), e.getPomFile(), e.getCauseException() ); throw new InvalidPluginException( "Plugin '" + plugin + "' is invalid: " - + e.getMessage(), e ); + + e.getMessage(), ee ); } ResolutionGroup resolutionGroup; @@ -1497,7 +1499,16 @@ public class DefaultPluginManager if ( project.getDependencyArtifacts() == null ) { // NOTE: Don't worry about covering this case with the error-reporter bindings...it's already handled by the project error reporter. - project.setDependencyArtifacts( repositorySystem.createArtifacts( project.getDependencies(), null, null, project ) ); + try + { + project.setDependencyArtifacts( repositorySystem.createArtifacts( project.getDependencies(), null, null, project ) ); + } + catch ( VersionNotFoundException e ) + { + InvalidDependencyVersionException ee = new InvalidDependencyVersionException( e.getProjectId(), e.getDependency(), e.getPomFile(), e.getCauseException() ); + + throw ee; + } } ArtifactFilter filter = new ScopeArtifactFilter( scope ); diff --git a/maven-project/pom.xml b/maven-project/pom.xml index c50d399cfa..232bcc7452 100644 --- a/maven-project/pom.xml +++ b/maven-project/pom.xml @@ -68,6 +68,10 @@ under the License. org.apache.maven maven-project-builder + + org.apache.maven + maven-repository + commons-jxpath commons-jxpath diff --git a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java index d151922d09..c395d62940 100644 --- a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java @@ -49,6 +49,7 @@ import org.apache.maven.project.builder.PomInterpolatorTag; import org.apache.maven.project.validation.ModelValidationResult; import org.apache.maven.project.validation.ModelValidator; import org.apache.maven.repository.MavenRepositorySystem; +import org.apache.maven.repository.VersionNotFoundException; import org.apache.maven.shared.model.InterpolatorProperty; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; @@ -271,11 +272,12 @@ public class DefaultMavenProjectBuilder { project.setDependencyArtifacts( repositorySystem.createArtifacts( project.getDependencies(), null, null, project ) ); } - catch ( InvalidDependencyVersionException e ) + catch ( VersionNotFoundException e ) { + InvalidDependencyVersionException ee = new InvalidDependencyVersionException( e.getProjectId(), e.getDependency(), e.getPomFile(), e.getCauseException() ); throw new ProjectBuildingException( safeVersionlessKey( project.getGroupId(), project.getArtifactId() ), "Unable to build project due to an invalid dependency version: " + - e.getMessage(), projectDescriptor, e ); + e.getMessage(), projectDescriptor, ee ); } ArtifactResolutionRequest request = new ArtifactResolutionRequest() diff --git a/maven-project/src/main/java/org/apache/maven/project/MavenProject.java b/maven-project/src/main/java/org/apache/maven/project/MavenProject.java index 0ccdd7c4b1..d9f2ba68d6 100644 --- a/maven-project/src/main/java/org/apache/maven/project/MavenProject.java +++ b/maven-project/src/main/java/org/apache/maven/project/MavenProject.java @@ -70,6 +70,7 @@ import org.apache.maven.project.artifact.InvalidDependencyVersionException; import org.apache.maven.project.artifact.MavenMetadataSource; import org.apache.maven.repository.MavenRepositoryWrapper; import org.apache.maven.repository.MavenRepositorySystem; +import org.apache.maven.repository.VersionNotFoundException; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.Xpp3Dom; @@ -1661,7 +1662,14 @@ public class MavenProject public Set createArtifacts( ArtifactFactory artifactFactory, String inheritedScope, ArtifactFilter dependencyFilter ) throws InvalidDependencyVersionException { - return repositorySystem.createArtifacts( getDependencies(), inheritedScope, dependencyFilter, this ); + try + { + return repositorySystem.createArtifacts( getDependencies(), inheritedScope, dependencyFilter, this ); + } + catch ( VersionNotFoundException e ) + { + throw new InvalidDependencyVersionException( e.getProjectId(), e.getDependency(), e.getPomFile(), e.getCauseException() ); + } } public void addProjectReference( MavenProject project ) diff --git a/maven-project/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java b/maven-project/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java deleted file mode 100644 index 31aabfaadf..0000000000 --- a/maven-project/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java +++ /dev/null @@ -1,957 +0,0 @@ -package org.apache.maven.repository; - -/* - * 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. - */ - -import java.io.File; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.ArtifactUtils; -import org.apache.maven.artifact.InvalidRepositoryException; -import org.apache.maven.artifact.factory.ArtifactFactory; -import org.apache.maven.artifact.manager.WagonManager; -import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException; -import org.apache.maven.artifact.metadata.ArtifactMetadataSource; -import org.apache.maven.artifact.metadata.ResolutionGroup; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.repository.ArtifactRepositoryFactory; -import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; -import org.apache.maven.artifact.repository.DefaultArtifactRepository; -import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; -import org.apache.maven.artifact.resolver.ArtifactNotFoundException; -import org.apache.maven.artifact.resolver.ArtifactResolutionException; -import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; -import org.apache.maven.artifact.resolver.ArtifactResolutionResult; -import org.apache.maven.artifact.resolver.ArtifactResolver; -import org.apache.maven.artifact.resolver.filter.AndArtifactFilter; -import org.apache.maven.artifact.resolver.filter.ArtifactFilter; -import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter; -import org.apache.maven.artifact.versioning.ArtifactVersion; -import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; -import org.apache.maven.artifact.versioning.VersionRange; -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Exclusion; -import org.apache.maven.model.Repository; -import org.apache.maven.model.RepositoryPolicy; -import org.apache.maven.project.artifact.InvalidDependencyVersionException; -import org.apache.maven.wagon.authentication.AuthenticationInfo; -import org.apache.maven.wagon.events.TransferListener; -import org.apache.maven.wagon.proxy.ProxyInfo; -import org.apache.maven.wagon.repository.RepositoryPermissions; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; -import org.codehaus.plexus.logging.Logger; -import org.codehaus.plexus.util.StringUtils; - -/** - * @author Jason van Zyl - */ -@Component(role = MavenRepositorySystem.class) -public class LegacyMavenRepositorySystem - implements MavenRepositorySystem -{ - @Requirement - private ArtifactFactory artifactFactory; - - @Requirement - private ArtifactResolver artifactResolver; - - @Requirement - private ArtifactRepositoryFactory artifactRepositoryFactory; - - @Requirement - private ArtifactRepositoryLayout defaultArtifactRepositoryLayout; - - @Requirement - private WagonManager wagonManager; - - @Requirement - private ArtifactMetadataSource artifactMetadataSource; - - @Requirement - private Logger logger; - - private static HashMap cache = new HashMap(); - - // Artifact Creation - - public Artifact createArtifact( String groupId, String artifactId, String version, String scope, String type ) - { - return artifactFactory.createArtifact( groupId, artifactId, version, scope, type ); - } - - public Artifact createArtifactWithClassifier( String groupId, String artifactId, String version, String type, String classifier ) - { - return artifactFactory.createArtifactWithClassifier( groupId, artifactId, version, type, classifier ); - } - - public Artifact createBuildArtifact( String groupId, String artifactId, String version, String packaging ) - { - return artifactFactory.createBuildArtifact( groupId, artifactId, version, packaging ); - } - - public Artifact createProjectArtifact( String groupId, String artifactId, String metaVersionId ) - { - return artifactFactory.createProjectArtifact( groupId, artifactId, metaVersionId ); - } - - public Artifact createDependencyArtifact( String groupId, String artifactId, String version, String type, String classifier, String scope, boolean optional ) - { - VersionRange versionRange; - try - { - versionRange = VersionRange.createFromVersionSpec( version ); - } - catch ( InvalidVersionSpecificationException e ) - { - return null; - } - - return artifactFactory.createDependencyArtifact( groupId, artifactId, versionRange, type, classifier, scope ); - } - - public Artifact createDependencyArtifact( String groupId, String artifactId, String version, String type, String classifier, String scope, String inheritedScope ) - { - VersionRange versionRange; - try - { - versionRange = VersionRange.createFromVersionSpec( version ); - } - catch ( InvalidVersionSpecificationException e ) - { - return null; - } - - return artifactFactory.createDependencyArtifact( groupId, artifactId, versionRange, type, classifier, scope, inheritedScope ); - } - - public Artifact createExtensionArtifact( String groupId, String artifactId, String version ) - { - VersionRange versionRange; - try - { - versionRange = VersionRange.createFromVersionSpec( version ); - } - catch ( InvalidVersionSpecificationException e ) - { - return null; - } - - return artifactFactory.createExtensionArtifact( groupId, artifactId, versionRange ); - } - - public Artifact createParentArtifact( String groupId, String artifactId, String version ) - { - return artifactFactory.createParentArtifact( groupId, artifactId, version ); - } - - public Artifact createPluginArtifact( String groupId, String artifactId, String version ) - { - VersionRange versionRange; - try - { - versionRange = VersionRange.createFromVersionSpec( version ); - } - catch ( InvalidVersionSpecificationException e ) - { - return null; - } - - return artifactFactory.createPluginArtifact( groupId, artifactId, versionRange ); - } - - /** - * @return {@link Set} < {@link Artifact} > - * @todo desperately needs refactoring. It's just here because it's implementation is maven-project specific - */ - public Set createArtifacts( List dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenRepositoryWrapper reactor ) - throws InvalidDependencyVersionException - { - Set projectArtifacts = new LinkedHashSet( dependencies.size() ); - - for ( Iterator i = dependencies.iterator(); i.hasNext(); ) - { - Dependency d = i.next(); - - String scope = d.getScope(); - - if ( StringUtils.isEmpty( scope ) ) - { - scope = Artifact.SCOPE_COMPILE; - - d.setScope( scope ); - } - - VersionRange versionRange; - try - { - versionRange = VersionRange.createFromVersionSpec( d.getVersion() ); - } - catch ( InvalidVersionSpecificationException e ) - { - throw new InvalidDependencyVersionException( reactor.getId(), d, reactor.getFile(), e ); - } - Artifact artifact = artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(), - versionRange, d.getType(), d.getClassifier(), - scope, inheritedScope, d.isOptional() ); - - if ( Artifact.SCOPE_SYSTEM.equals( scope ) ) - { - artifact.setFile( new File( d.getSystemPath() ) ); - } - - ArtifactFilter artifactFilter = dependencyFilter; - - if ( ( artifact != null ) && ( ( artifactFilter == null ) || artifactFilter.include( artifact ) ) ) - { - if ( ( d.getExclusions() != null ) && !d.getExclusions().isEmpty() ) - { - List exclusions = new ArrayList(); - for ( Iterator j = d.getExclusions().iterator(); j.hasNext(); ) - { - Exclusion e = j.next(); - exclusions.add( e.getGroupId() + ":" + e.getArtifactId() ); - } - - ArtifactFilter newFilter = new ExcludesArtifactFilter( exclusions ); - - if ( artifactFilter != null ) - { - AndArtifactFilter filter = new AndArtifactFilter(); - filter.add( artifactFilter ); - filter.add( newFilter ); - artifactFilter = filter; - } - else - { - artifactFilter = newFilter; - } - } - - artifact.setDependencyFilter( artifactFilter ); - - if ( reactor != null ) - { - artifact = reactor.find( artifact ); - } - - projectArtifacts.add( artifact ); - } - } - - return projectArtifacts; - } - - public List retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactMetadataRetrievalException - { - return artifactMetadataSource.retrieveAvailableVersions( artifact, localRepository, remoteRepositories ); - } - - public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactMetadataRetrievalException - { - return artifactMetadataSource.retrieve( artifact, localRepository, remoteRepositories ); - } - - // ---------------------------------------------------------------------------- - // Code snagged from ProjectUtils: this will have to be moved somewhere else - // but just trying to collect it all in one place right now. - // ---------------------------------------------------------------------------- - - public List buildArtifactRepositories( List repositories ) - throws InvalidRepositoryException - { - List repos = new ArrayList(); - - for ( Repository mavenRepo : repositories ) - { - ArtifactRepository artifactRepo = buildArtifactRepository( mavenRepo ); - - if ( !repos.contains( artifactRepo ) ) - { - repos.add( artifactRepo ); - } - } - - return repos; - } - - public ArtifactRepository buildArtifactRepository( Repository repo ) - throws InvalidRepositoryException - { - if ( repo != null ) - { - String id = repo.getId(); - String url = repo.getUrl(); - /* - MNG-4050: Temporarily disabled this check since it is breaking the bootstrap unit tests on commons-parent pom - */ - /* - if ( id == null || id.trim().length() < 1 ) - { - throw new InvalidRepositoryException( "Repository ID must not be empty (URL is: " + url + ").", url ); - } - - if ( url == null || url.trim().length() < 1 ) - { - throw new InvalidRepositoryException( "Repository URL must not be empty (ID is: " + id + ").", id ); - } - */ - ArtifactRepositoryPolicy snapshots = buildArtifactRepositoryPolicy( repo.getSnapshots() ); - - ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( repo.getReleases() ); - - return artifactRepositoryFactory.createArtifactRepository( id, url, repo.getLayout(), snapshots, releases ); - } - else - { - return null; - } - } - - public ArtifactRepositoryPolicy buildArtifactRepositoryPolicy( RepositoryPolicy policy ) - { - boolean enabled = true; - - String updatePolicy = null; - - String checksumPolicy = null; - - if ( policy != null ) - { - enabled = policy.isEnabled(); - - if ( policy.getUpdatePolicy() != null ) - { - updatePolicy = policy.getUpdatePolicy(); - } - if ( policy.getChecksumPolicy() != null ) - { - checksumPolicy = policy.getChecksumPolicy(); - } - } - - return new ArtifactRepositoryPolicy( enabled, updatePolicy, checksumPolicy ); - } - - // From MavenExecutionRequestPopulator - - public ArtifactRepository createLocalRepository( String url, String repositoryId ) - throws IOException - { - return createRepository( canonicalFileUrl( url ), repositoryId ); - } - - private String canonicalFileUrl( String url ) - throws IOException - { - if ( !url.startsWith( "file:" ) ) - { - url = "file://" + url; - } - else if ( url.startsWith( "file:" ) && !url.startsWith( "file://" ) ) - { - url = "file://" + url.substring( "file:".length() ); - } - - // So now we have an url of the form file:// - - // We want to eliminate any relative path nonsense and lock down the path so we - // need to fully resolve it before any sub-modules use the path. This can happen - // when you are using a custom settings.xml that contains a relative path entry - // for the local repository setting. - - File localRepository = new File( url.substring( "file://".length() ) ); - - if ( !localRepository.isAbsolute() ) - { - url = "file://" + localRepository.getCanonicalPath(); - } - - return url; - } - - public ArtifactRepository createRepository( String url, String repositoryId ) - { - // snapshots vs releases - // offline = to turning the update policy off - - //TODO: we'll need to allow finer grained creation of repositories but this will do for now - - String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS; - - String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN; - - ArtifactRepositoryPolicy snapshotsPolicy = new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag ); - - ArtifactRepositoryPolicy releasesPolicy = new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag ); - - return artifactRepositoryFactory.createArtifactRepository( repositoryId, url, defaultArtifactRepositoryLayout, snapshotsPolicy, releasesPolicy ); - } - - public void setGlobalUpdatePolicy( String policy ) - { - artifactRepositoryFactory.setGlobalUpdatePolicy( policy ); - } - - public void setGlobalChecksumPolicy( String policy ) - { - artifactRepositoryFactory.setGlobalChecksumPolicy( policy ); - } - - // Taken from RepositoryHelper - - public void findModelFromRepository( Artifact artifact, List remoteArtifactRepositories, ArtifactRepository localRepository ) - throws InvalidRepositoryException, ArtifactResolutionException, ArtifactNotFoundException - { - - if ( cache.containsKey( artifact.getId() ) ) - { - artifact.setFile( cache.get( artifact.getId() ).getFile() ); - } - - String projectId = safeVersionlessKey( artifact.getGroupId(), artifact.getArtifactId() ); - remoteArtifactRepositories = normalizeToArtifactRepositories( remoteArtifactRepositories, projectId ); - - Artifact projectArtifact; - - // if the artifact is not a POM, we need to construct a POM artifact based on the artifact parameter given. - if ( "pom".equals( artifact.getType() ) ) - { - projectArtifact = artifact; - } - else - { - logger.debug( "Attempting to build MavenProject instance for Artifact (" + artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion() + ") of type: " - + artifact.getType() + "; constructing POM artifact instead." ); - - projectArtifact = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getScope() ); - } - - artifactResolver.resolve( projectArtifact, remoteArtifactRepositories, localRepository ); - - File file = projectArtifact.getFile(); - artifact.setFile( file ); - cache.put( artifact.getId(), artifact ); - } - - private List normalizeToArtifactRepositories( List remoteArtifactRepositories, String projectId ) - throws InvalidRepositoryException - { - List normalized = new ArrayList( remoteArtifactRepositories.size() ); - - boolean normalizationNeeded = false; - for ( Iterator it = remoteArtifactRepositories.iterator(); it.hasNext(); ) - { - Object item = it.next(); - - if ( item instanceof ArtifactRepository ) - { - normalized.add( item ); - } - else if ( item instanceof Repository ) - { - Repository repo = (Repository) item; - item = buildArtifactRepository( repo ); - - normalized.add( item ); - normalizationNeeded = true; - } - else - { - throw new InvalidRepositoryException( projectId, "Error building artifact repository from non-repository information item: " + item ); - } - } - - if ( normalizationNeeded ) - { - return normalized; - } - else - { - return remoteArtifactRepositories; - } - } - - private String safeVersionlessKey( String groupId, String artifactId ) - { - String gid = groupId; - - if ( StringUtils.isEmpty( gid ) ) - { - gid = "unknown"; - } - - String aid = artifactId; - - if ( StringUtils.isEmpty( aid ) ) - { - aid = "unknown"; - } - - return ArtifactUtils.versionlessKey( gid, aid ); - } - - /** - * Resolves the specified artifact - * - * @param artifact the artifact to resolve - * @throws IOException if there is a problem resolving the artifact - */ - public void resolve( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactResolutionException, ArtifactNotFoundException - { - artifactResolver.resolve( artifact, remoteRepositories, localRepository ); - } - - public ArtifactResolutionResult resolve( ArtifactResolutionRequest request ) - { - return artifactResolver.resolve( request ); - } - - // ------------------------------------------------------------------------ - // Extracted from DefaultWagonManager - // ------------------------------------------------------------------------ - - private static final String WILDCARD = "*"; - - private static final String EXTERNAL_WILDCARD = "external:*"; - - private static int anonymousMirrorIdSeed = 0; - - private boolean online = true; - - private boolean interactive = true; - - private TransferListener downloadMonitor; - - private Map proxies = new HashMap(); - - private Map authenticationInfoMap = new HashMap(); - - private Map serverPermissionsMap = new HashMap(); - - //used LinkedMap to preserve the order. - private Map mirrors = new LinkedHashMap(); - - public ArtifactRepository getMirrorRepository( ArtifactRepository repository ) - { - ArtifactRepository mirror = getMirror( repository ); - if ( mirror != null ) - { - String id = mirror.getId(); - if ( id == null ) - { - // TODO: this should be illegal in settings.xml - id = repository.getId(); - } - - logger.debug( "Using mirror: " + mirror.getId() + " for repository: " + repository.getId() + "\n(mirror url: " + mirror.getUrl() + ")" ); - repository = artifactRepositoryFactory.createArtifactRepository( id, mirror.getUrl(), repository.getLayout(), repository.getSnapshots(), repository.getReleases() ); - } - return repository; - } - - /** - * This method finds a matching mirror for the selected repository. If there is an exact match, - * this will be used. If there is no exact match, then the list of mirrors is examined to see if - * a pattern applies. - * - * @param originalRepository See if there is a mirror for this repository. - * @return the selected mirror or null if none are found. - */ - public ArtifactRepository getMirror( ArtifactRepository originalRepository ) - { - ArtifactRepository selectedMirror = mirrors.get( originalRepository.getId() ); - if ( null == selectedMirror ) - { - // Process the patterns in order. First one that matches wins. - Set keySet = mirrors.keySet(); - if ( keySet != null ) - { - for ( String pattern : keySet ) - { - if ( matchPattern( originalRepository, pattern ) ) - { - selectedMirror = mirrors.get( pattern ); - } - } - } - - } - return selectedMirror; - } - - /** - * 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. - */ - public 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 ) - { - // see if this is a negative match - if ( repo.length() > 1 && repo.startsWith( "!" ) ) - { - if ( originalId.equals( repo.substring( 1 ) ) ) - { - // explicitly exclude. Set result and stop processing. - result = false; - break; - } - } - // check for exact match - else if ( originalId.equals( repo ) ) - { - 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. - */ - public 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; - } - } - - public void addMirror( String id, String mirrorOf, String url ) - { - if ( id == null ) - { - id = "mirror-" + anonymousMirrorIdSeed++; - logger.warn( "You are using a mirror that doesn't declare an element. Using \'" + id + "\' instead:\nId: " + id + "\nmirrorOf: " + mirrorOf + "\nurl: " + url + "\n" ); - } - - ArtifactRepository mirror = new DefaultArtifactRepository( id, url, null ); - - mirrors.put( mirrorOf, mirror ); - } - - public void setOnline( boolean online ) - { - this.online = online; - } - - public boolean isOnline() - { - return online; - } - - public void setInteractive( boolean interactive ) - { - this.interactive = interactive; - } - - public void setDownloadMonitor( TransferListener downloadMonitor ) - { - this.downloadMonitor = downloadMonitor; - } - - public void addProxy( String protocol, String host, int port, String username, String password, String nonProxyHosts ) - { - ProxyInfo proxyInfo = new ProxyInfo(); - proxyInfo.setHost( host ); - proxyInfo.setType( protocol ); - proxyInfo.setPort( port ); - proxyInfo.setNonProxyHosts( nonProxyHosts ); - proxyInfo.setUserName( username ); - proxyInfo.setPassword( password ); - - proxies.put( protocol, proxyInfo ); - } - - public void addAuthenticationInfo( String repositoryId, String username, String password, String privateKey, String passphrase ) - { - AuthenticationInfo authInfo = new AuthenticationInfo(); - authInfo.setUserName( username ); - authInfo.setPassword( password ); - authInfo.setPrivateKey( privateKey ); - authInfo.setPassphrase( passphrase ); - - authenticationInfoMap.put( repositoryId, authInfo ); - } - - public void addPermissionInfo( String repositoryId, String filePermissions, String directoryPermissions ) - { - RepositoryPermissions permissions = new RepositoryPermissions(); - - boolean addPermissions = false; - - if ( filePermissions != null ) - { - permissions.setFileMode( filePermissions ); - addPermissions = true; - } - - if ( directoryPermissions != null ) - { - permissions.setDirectoryMode( directoryPermissions ); - addPermissions = true; - } - - if ( addPermissions ) - { - serverPermissionsMap.put( repositoryId, permissions ); - } - } - - // These two methods are here so that the ArtifactMetadataSource is implemented so that I can pass this into an ArtifactResolutionRequest. - // Intermediate measure before separating the RepositorySystem out into its own module. - - public List retrieveAvailableVersionsFromDeploymentRepository( Artifact artifact, ArtifactRepository localRepository, ArtifactRepository remoteRepository ) - throws ArtifactMetadataRetrievalException - { - return artifactMetadataSource.retrieveAvailableVersionsFromDeploymentRepository( artifact, localRepository, remoteRepository ); - } - - public Artifact retrieveRelocatedArtifact( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactMetadataRetrievalException - { - return artifactMetadataSource.retrieveRelocatedArtifact( artifact, localRepository, remoteRepositories ); - } - - // Test for this stuff - - /* - - public void testAddMirrorWithNullRepositoryId() - { - wagonManager.addMirror( null, "test", "http://www.nowhere.com/" ); - } - - public void testGetArtifactSha1MissingMd5Present() - throws IOException, UnsupportedProtocolException, TransferFailedException, ResourceDoesNotExistException - { - Artifact artifact = createTestPomArtifact( "target/test-data/get-remote-artifact" ); - - ArtifactRepository repo = createStringRepo(); - - StringWagon wagon = (StringWagon) wagonManager.getWagon( "string" ); - wagon.addExpectedContent( repo.getLayout().pathOf( artifact ), "expected" ); - wagon.addExpectedContent( repo.getLayout().pathOf( artifact ) + ".md5", "bad_checksum" ); - - wagonManager.getArtifact( artifact, repo, true ); - - assertTrue( artifact.getFile().exists() ); - } - - public void testExternalURL() - { - DefaultWagonManager mgr = new DefaultWagonManager(); - assertTrue( mgr.isExternalRepo( getRepo( "foo", "http://somehost" ) ) ); - assertTrue( mgr.isExternalRepo( getRepo( "foo", "http://somehost:9090/somepath" ) ) ); - assertTrue( mgr.isExternalRepo( getRepo( "foo", "ftp://somehost" ) ) ); - assertTrue( mgr.isExternalRepo( getRepo( "foo", "http://192.168.101.1" ) ) ); - assertTrue( mgr.isExternalRepo( getRepo( "foo", "http://" ) ) ); - // these are local - assertFalse( mgr.isExternalRepo( getRepo( "foo", "http://localhost:8080" ) ) ); - assertFalse( mgr.isExternalRepo( getRepo( "foo", "http://127.0.0.1:9090" ) ) ); - assertFalse( mgr.isExternalRepo( getRepo( "foo", "file://localhost/somepath" ) ) ); - assertFalse( mgr.isExternalRepo( getRepo( "foo", "file://localhost/D:/somepath" ) ) ); - assertFalse( mgr.isExternalRepo( getRepo( "foo", "http://localhost" ) ) ); - assertFalse( mgr.isExternalRepo( getRepo( "foo", "http://127.0.0.1" ) ) ); - assertFalse( mgr.isExternalRepo( getRepo( "foo", "file:///somepath" ) ) ); - assertFalse( mgr.isExternalRepo( getRepo( "foo", "file://D:/somepath" ) ) ); - - // not a proper url so returns false; - assertFalse( mgr.isExternalRepo( getRepo( "foo", "192.168.101.1" ) ) ); - assertFalse( mgr.isExternalRepo( getRepo( "foo", "" ) ) ); - } - - public void testMirrorLookup() - { - wagonManager.addMirror( "a", "a", "http://a" ); - wagonManager.addMirror( "b", "b", "http://b" ); - - ArtifactRepository repo = null; - repo = wagonManager.getMirrorRepository( getRepo( "a", "http://a.a" ) ); - assertEquals( "http://a", repo.getUrl() ); - - repo = wagonManager.getMirrorRepository( getRepo( "b", "http://a.a" ) ); - assertEquals( "http://b", repo.getUrl() ); - - repo = wagonManager.getMirrorRepository( getRepo( "c", "http://c.c" ) ); - assertEquals( "http://c.c", repo.getUrl() ); - - } - - public void testMirrorWildcardLookup() - { - wagonManager.addMirror( "a", "a", "http://a" ); - wagonManager.addMirror( "b", "b", "http://b" ); - wagonManager.addMirror( "c", "*", "http://wildcard" ); - - ArtifactRepository repo = null; - repo = wagonManager.getMirrorRepository( getRepo( "a", "http://a.a" ) ); - assertEquals( "http://a", repo.getUrl() ); - - repo = wagonManager.getMirrorRepository( getRepo( "b", "http://a.a" ) ); - assertEquals( "http://b", repo.getUrl() ); - - repo = wagonManager.getMirrorRepository( getRepo( "c", "http://c.c" ) ); - assertEquals( "http://wildcard", repo.getUrl() ); - - } - - public void testMirrorStopOnFirstMatch() - { - //exact matches win first - wagonManager.addMirror( "a2", "a,b", "http://a2" ); - wagonManager.addMirror( "a", "a", "http://a" ); - //make sure repeated entries are skipped - wagonManager.addMirror( "a", "a", "http://a3" ); - - wagonManager.addMirror( "b", "b", "http://b" ); - wagonManager.addMirror( "c", "d,e", "http://de" ); - wagonManager.addMirror( "c", "*", "http://wildcard" ); - wagonManager.addMirror( "c", "e,f", "http://ef" ); - - - - ArtifactRepository repo = null; - repo = wagonManager.getMirrorRepository( getRepo( "a", "http://a.a" ) ); - assertEquals( "http://a", repo.getUrl() ); - - repo = wagonManager.getMirrorRepository( getRepo( "b", "http://a.a" ) ); - assertEquals( "http://b", repo.getUrl() ); - - repo = wagonManager.getMirrorRepository( getRepo( "c", "http://c.c" ) ); - assertEquals( "http://wildcard", repo.getUrl() ); - - repo = wagonManager.getMirrorRepository( getRepo( "d", "http://d" ) ); - assertEquals( "http://de", repo.getUrl() ); - - repo = wagonManager.getMirrorRepository( getRepo( "e", "http://e" ) ); - assertEquals( "http://de", repo.getUrl() ); - - repo = wagonManager.getMirrorRepository( getRepo( "f", "http://f" ) ); - assertEquals( "http://wildcard", repo.getUrl() ); - - } - - - public void testPatterns() - { - DefaultWagonManager mgr = new DefaultWagonManager(); - - assertTrue( mgr.matchPattern( getRepo( "a" ), "*" ) ); - assertTrue( mgr.matchPattern( getRepo( "a" ), "*," ) ); - assertTrue( mgr.matchPattern( getRepo( "a" ), ",*," ) ); - assertTrue( mgr.matchPattern( getRepo( "a" ), "*," ) ); - - assertTrue( mgr.matchPattern( getRepo( "a" ), "a" ) ); - assertTrue( mgr.matchPattern( getRepo( "a" ), "a," ) ); - assertTrue( mgr.matchPattern( getRepo( "a" ), ",a," ) ); - assertTrue( mgr.matchPattern( getRepo( "a" ), "a," ) ); - - assertFalse( mgr.matchPattern( getRepo( "b" ), "a" ) ); - assertFalse( mgr.matchPattern( getRepo( "b" ), "a," ) ); - assertFalse( mgr.matchPattern( getRepo( "b" ), ",a" ) ); - assertFalse( mgr.matchPattern( getRepo( "b" ), ",a," ) ); - - assertTrue( mgr.matchPattern( getRepo( "a" ), "a,b" ) ); - assertTrue( mgr.matchPattern( getRepo( "b" ), "a,b" ) ); - - assertFalse( mgr.matchPattern( getRepo( "c" ), "a,b" ) ); - - assertTrue( mgr.matchPattern( getRepo( "a" ), "*" ) ); - assertTrue( mgr.matchPattern( getRepo( "a" ), "*,b" ) ); - assertTrue( mgr.matchPattern( getRepo( "a" ), "*,!b" ) ); - - assertFalse( mgr.matchPattern( getRepo( "a" ), "*,!a" ) ); - assertFalse( mgr.matchPattern( getRepo( "a" ), "!a,*" ) ); - - assertTrue( mgr.matchPattern( getRepo( "c" ), "*,!a" ) ); - assertTrue( mgr.matchPattern( getRepo( "c" ), "!a,*" ) ); - - assertFalse( mgr.matchPattern( getRepo( "c" ), "!a,!c" ) ); - assertFalse( mgr.matchPattern( getRepo( "d" ), "!a,!c*" ) ); - } - - public void testPatternsWithExternal() - { - DefaultWagonManager mgr = new DefaultWagonManager(); - - assertTrue( mgr.matchPattern( getRepo( "a", "http://localhost" ), "*" ) ); - assertFalse( mgr.matchPattern( getRepo( "a", "http://localhost" ), "external:*" ) ); - - assertTrue( mgr.matchPattern( getRepo( "a", "http://localhost" ), "external:*,a" ) ); - assertFalse( mgr.matchPattern( getRepo( "a", "http://localhost" ), "external:*,!a" ) ); - assertTrue( mgr.matchPattern( getRepo( "a", "http://localhost" ), "a,external:*" ) ); - assertFalse( mgr.matchPattern( getRepo( "a", "http://localhost" ), "!a,external:*" ) ); - - assertFalse( mgr.matchPattern( getRepo( "c", "http://localhost" ), "!a,external:*" ) ); - assertTrue( mgr.matchPattern( getRepo( "c", "http://somehost" ), "!a,external:*" ) ); - } - - */ -} diff --git a/maven-project/src/main/java/org/apache/maven/repository/MavenRepositorySystem.java b/maven-project/src/main/java/org/apache/maven/repository/MavenRepositorySystem.java deleted file mode 100644 index a288c275f3..0000000000 --- a/maven-project/src/main/java/org/apache/maven/repository/MavenRepositorySystem.java +++ /dev/null @@ -1,143 +0,0 @@ -package org.apache.maven.repository; - -/* - * 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. - */ - -import java.io.IOException; -import java.util.List; -import java.util.Set; - -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.InvalidRepositoryException; -import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException; -import org.apache.maven.artifact.metadata.ArtifactMetadataSource; -import org.apache.maven.artifact.metadata.ResolutionGroup; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.resolver.ArtifactNotFoundException; -import org.apache.maven.artifact.resolver.ArtifactResolutionException; -import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; -import org.apache.maven.artifact.resolver.ArtifactResolutionResult; -import org.apache.maven.artifact.resolver.filter.ArtifactFilter; -import org.apache.maven.artifact.versioning.ArtifactVersion; -import org.apache.maven.model.Dependency; -import org.apache.maven.model.Repository; -import org.apache.maven.project.artifact.InvalidDependencyVersionException; -import org.apache.maven.wagon.events.TransferListener; - -/** - * @author Jason van Zyl - */ -public interface MavenRepositorySystem - extends ArtifactMetadataSource // This needs to be removed -{ - // Artifact creation: This needs to be reduced to fewer, if not one, method. - - Artifact createArtifact( String groupId, String artifactId, String version, String scope, String type ); - - Artifact createArtifactWithClassifier( String groupId, String artifactId, String version, String type, String classifier ); - - Artifact createBuildArtifact( String groupId, String artifactId, String version, String packaging ); - - Artifact createProjectArtifact( String groupId, String artifactId, String metaVersionId ); - - Artifact createPluginArtifact( String groupId, String artifactId, String version ); - - Artifact createExtensionArtifact( String groupId, String artifactId, String version ); - - Artifact createParentArtifact( String groupId, String artifactId, String version ); - - Artifact createDependencyArtifact( String groupId, String artifactId, String version, String type, String classifier, String scope, boolean optional ); - - Artifact createDependencyArtifact( String groupId, String artifactId, String version, String type, String classifier, String scope, String inheritedScope ); - - Set createArtifacts( List dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenRepositoryWrapper reactor ) - throws InvalidDependencyVersionException; - - // Repository creation - - // maven model - List buildArtifactRepositories( List repositories ) - throws InvalidRepositoryException; - - // maven model - ArtifactRepository buildArtifactRepository( Repository repository ) - throws InvalidRepositoryException; - - ArtifactRepository createLocalRepository( String url, String repositoryId ) - throws IOException; - - ArtifactRepository createRepository( String url, String repositoryId ); - - void setGlobalUpdatePolicy( String policy ); - - void setGlobalChecksumPolicy( String policy ); - - // Artifact resolution - - //MetadataResolutionResult resolveMetadata( MetadataResolutionRequest request ); - - ArtifactResolutionResult resolve( ArtifactResolutionRequest request ); - - // This can be reduced to the request/result - void resolve( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactResolutionException, ArtifactNotFoundException; - - void findModelFromRepository( Artifact artifact, List remoteArtifactRepositories, ArtifactRepository localRepository ) - throws InvalidRepositoryException, ArtifactResolutionException, ArtifactNotFoundException; - - // Version retrieval or metadata operations - - ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactMetadataRetrievalException; - - List retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactMetadataRetrievalException; - - // These are only showing up in tests, not called from anywhere else in the core - public List retrieveAvailableVersionsFromDeploymentRepository( Artifact artifact, ArtifactRepository localRepository, ArtifactRepository remoteRepository ) - throws ArtifactMetadataRetrievalException; - - public Artifact retrieveRelocatedArtifact( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) - throws ArtifactMetadataRetrievalException; - - // Mirrors - - ArtifactRepository getMirrorRepository( ArtifactRepository repository ); - - ArtifactRepository getMirror( ArtifactRepository originalRepository ); - - boolean matchPattern( ArtifactRepository originalRepository, String pattern ); - - boolean isExternalRepo( ArtifactRepository originalRepository ); - - void addMirror( String id, String mirrorOf, String url ); - - // Network enablement - - void setOnline( boolean online ); - - boolean isOnline(); - - // This doesn't belong here - void setInteractive( boolean interactive ); - - void setDownloadMonitor( TransferListener downloadMonitor ); - - void addProxy( String protocol, String host, int port, String username, String password, String nonProxyHosts ); - - void addAuthenticationInfo( String repositoryId, String username, String password, String privateKey, String passphrase ); - - void addPermissionInfo( String repositoryId, String filePermissions, String directoryPermissions ); -} diff --git a/maven-project/src/main/java/org/apache/maven/repository/MavenRepositoryWrapper.java b/maven-project/src/main/java/org/apache/maven/repository/MavenRepositoryWrapper.java deleted file mode 100644 index 590b082dd9..0000000000 --- a/maven-project/src/main/java/org/apache/maven/repository/MavenRepositoryWrapper.java +++ /dev/null @@ -1,53 +0,0 @@ -/* -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. -*/ - -package org.apache.maven.repository; - -import java.io.File; - -import org.apache.maven.artifact.Artifact; - -/** - * small repository implementation used to find artifact in a local source - * instead of going out to the real repo. Used to search reactor for matches - * - * @author Oleg Gusakov - * @version $Id$ - * - */ -public interface MavenRepositoryWrapper -{ - /** - * finds supplied artifact, if any, in the wrapped source - * - * @param artifact - * @return - */ - Artifact find( Artifact artifact ); - - /** - * @return - */ - String getId(); - - /** - * @return - */ - File getFile(); -} diff --git a/maven-project/src/test/java/org/apache/maven/project/TestMavenRepositorySystem.java b/maven-project/src/test/java/org/apache/maven/project/TestMavenRepositorySystem.java index 83bc805ee3..492dd496e3 100644 --- a/maven-project/src/test/java/org/apache/maven/project/TestMavenRepositorySystem.java +++ b/maven-project/src/test/java/org/apache/maven/project/TestMavenRepositorySystem.java @@ -15,6 +15,7 @@ import org.apache.maven.model.io.xpp3.MavenXpp3Reader; import org.apache.maven.project.artifact.InvalidDependencyVersionException; import org.apache.maven.repository.LegacyMavenRepositorySystem; import org.apache.maven.repository.MavenRepositorySystem; +import org.apache.maven.repository.VersionNotFoundException; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; @@ -63,9 +64,11 @@ public class TestMavenRepositorySystem { artifacts = createArtifacts( model.getDependencies(), artifact.getScope(), null, null ); } - catch ( InvalidDependencyVersionException e ) + catch ( VersionNotFoundException e ) { - throw new ArtifactMetadataRetrievalException( e ); + InvalidDependencyVersionException ee = new InvalidDependencyVersionException(e.getProjectId(), e.getDependency(),e.getPomFile(), e.getCauseException() ); + + throw new ArtifactMetadataRetrievalException( ee ); } List artifactRepositories; diff --git a/maven-repository/pom.xml b/maven-repository/pom.xml index 8fd24411cb..923457df6d 100644 --- a/maven-repository/pom.xml +++ b/maven-repository/pom.xml @@ -52,4 +52,12 @@ under the License. test + + + + org.codehaus.plexus + plexus-component-metadata + + + diff --git a/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java b/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java index 037e6d54f9..cefcd393ed 100644 --- a/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java +++ b/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java @@ -56,7 +56,6 @@ import org.apache.maven.model.Dependency; import org.apache.maven.model.Exclusion; import org.apache.maven.model.Repository; import org.apache.maven.model.RepositoryPolicy; -//import org.apache.maven.project.artifact.InvalidDependencyVersionException; import org.apache.maven.wagon.authentication.AuthenticationInfo; import org.apache.maven.wagon.events.TransferListener; import org.apache.maven.wagon.proxy.ProxyInfo; @@ -307,7 +306,10 @@ public class LegacyMavenRepositorySystem { String id = repo.getId(); String url = repo.getUrl(); - + /* + MNG-4050: Temporarily disabled this check since it is breaking the bootstrap unit tests on commons-parent pom + */ + /* if ( id == null || id.trim().length() < 1 ) { throw new InvalidRepositoryException( "Repository ID must not be empty (URL is: " + url + ").", url ); @@ -317,7 +319,7 @@ public class LegacyMavenRepositorySystem { throw new InvalidRepositoryException( "Repository URL must not be empty (ID is: " + id + ").", id ); } - + */ ArtifactRepositoryPolicy snapshots = buildArtifactRepositoryPolicy( repo.getSnapshots() ); ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( repo.getReleases() ); diff --git a/maven-repository/src/main/java/org/apache/maven/repository/MavenRepositorySystem.java b/maven-repository/src/main/java/org/apache/maven/repository/MavenRepositorySystem.java index c7d6c71e5f..00a325a61d 100644 --- a/maven-repository/src/main/java/org/apache/maven/repository/MavenRepositorySystem.java +++ b/maven-repository/src/main/java/org/apache/maven/repository/MavenRepositorySystem.java @@ -62,7 +62,7 @@ public interface MavenRepositorySystem Artifact createDependencyArtifact( String groupId, String artifactId, String version, String type, String classifier, String scope, String inheritedScope ); Set createArtifacts( List dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenRepositoryWrapper reactor ) - throws VersionNotFoundException; + throws VersionNotFoundException; // Repository creation diff --git a/maven-repository/src/main/java/org/apache/maven/repository/VersionNotFoundException.java b/maven-repository/src/main/java/org/apache/maven/repository/VersionNotFoundException.java index 728778af6d..bd371c2518 100644 --- a/maven-repository/src/main/java/org/apache/maven/repository/VersionNotFoundException.java +++ b/maven-repository/src/main/java/org/apache/maven/repository/VersionNotFoundException.java @@ -35,6 +35,10 @@ public class VersionNotFoundException extends Exception { private Dependency dependency; + + private String projectId; + private File pomFile; + private InvalidVersionSpecificationException cause; public VersionNotFoundException( String projectId , Dependency dependency @@ -44,6 +48,12 @@ public class VersionNotFoundException { super( projectId+", "+formatLocationInPom( dependency )+ " " +dependency.getVersion()+", pom file "+pomFile, cause ); + this.projectId = projectId; + + this.pomFile = pomFile; + + this.cause = cause; + this.dependency = dependency; } @@ -56,4 +66,21 @@ public class VersionNotFoundException { return dependency; } + + public String getProjectId() + { + return projectId; + } + + public File getPomFile() + { + return pomFile; + } + + public InvalidVersionSpecificationException getCauseException() + { + return cause; + } + + } diff --git a/mercury-ant-tasks-1.0-alpha-6-SNAPSHOT.jar b/mercury-ant-tasks-1.0-alpha-6-SNAPSHOT.jar index 79808e9708..9cee8fd8a2 100644 Binary files a/mercury-ant-tasks-1.0-alpha-6-SNAPSHOT.jar and b/mercury-ant-tasks-1.0-alpha-6-SNAPSHOT.jar differ diff --git a/pom.xml b/pom.xml index 287fcf7cda..b41a48d9a5 100644 --- a/pom.xml +++ b/pom.xml @@ -315,6 +315,11 @@ under the License. maven-project-builder ${project.version} + + org.apache.maven + maven-repository + ${project.version} + org.apache.maven maven-compat