diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultMavenArtifactRepository.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultMavenArtifactRepository.java index 7f1457689422..9c04d13268d7 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultMavenArtifactRepository.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultMavenArtifactRepository.java @@ -293,7 +293,7 @@ ImmutableMetadataSources createMetadataSources(MavenMetadataLoader mavenMetadata sources.add(gradleModuleMetadataSource); } if (metadataSources.mavenPom) { - DefaultMavenPomMetadataSource pomMetadataSource = new DefaultMavenPomMetadataSource(MavenMetadataArtifactProvider.INSTANCE, getPomParser(), fileResourceRepository, getMetadataValidationServices(), mavenMetadataLoader); + DefaultMavenPomMetadataSource pomMetadataSource = getPomMetadataSource(mavenMetadataLoader, fileResourceRepository); if (metadataSources.ignoreGradleMetadataRedirection) { sources.add(pomMetadataSource); } else { @@ -306,11 +306,15 @@ ImmutableMetadataSources createMetadataSources(MavenMetadataLoader mavenMetadata return new DefaultImmutableMetadataSources(sources.build()); } + protected DefaultMavenPomMetadataSource getPomMetadataSource(MavenMetadataLoader mavenMetadataLoader, FileResourceRepository fileResourceRepository) { + return new DefaultMavenPomMetadataSource(MavenMetadataArtifactProvider.INSTANCE, getPomParser(), fileResourceRepository, getMetadataValidationServices(), mavenMetadataLoader); + } + protected DefaultMavenPomMetadataSource.MavenMetadataValidator getMetadataValidationServices() { return NO_OP_VALIDATION_SERVICES; } - private MetaDataParser getPomParser() { + MetaDataParser getPomParser() { return pomParser; } diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultMavenLocalArtifactRepository.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultMavenLocalArtifactRepository.java index ba7a6a97ad77..7d15050bcc19 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultMavenLocalArtifactRepository.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/DefaultMavenLocalArtifactRepository.java @@ -17,6 +17,7 @@ import org.gradle.api.artifacts.repositories.AuthenticationContainer; import org.gradle.api.artifacts.repositories.MavenArtifactRepository; +import org.gradle.api.internal.artifacts.repositories.metadata.MavenLocalPomMetadataSource; import org.gradle.internal.instantiation.InstantiatorFactory; import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.GradleModuleMetadataParser; import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.MetaDataParser; @@ -85,6 +86,11 @@ protected MavenResolver createRealResolver() { return resolver; } + @Override + protected DefaultMavenPomMetadataSource getPomMetadataSource(MavenMetadataLoader mavenMetadataLoader, FileResourceRepository fileResourceRepository) { + return new MavenLocalPomMetadataSource(MavenMetadataArtifactProvider.INSTANCE, getPomParser(), fileResourceRepository, getMetadataValidationServices(), mavenMetadataLoader); + } + @Override protected DefaultMavenPomMetadataSource.MavenMetadataValidator getMetadataValidationServices() { return new MavenLocalMetadataValidator(); diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/metadata/DefaultArtifactMetadataSource.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/metadata/DefaultArtifactMetadataSource.java index b27346bef050..4c74ab7ebec2 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/metadata/DefaultArtifactMetadataSource.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/metadata/DefaultArtifactMetadataSource.java @@ -86,7 +86,7 @@ public void listModuleVersions(ModuleDependencyMetadata dependency, ModuleIdenti versionLister.listVersions(module, dependencyArtifact, artifactPatterns, result); } - private static IvyArtifactName getPrimaryDependencyArtifact(ModuleDependencyMetadata dependency) { + static IvyArtifactName getPrimaryDependencyArtifact(ModuleDependencyMetadata dependency) { String moduleName = dependency.getSelector().getModule(); List artifacts = dependency.getArtifacts(); if (artifacts.isEmpty()) { diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/metadata/MavenLocalPomMetadataSource.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/metadata/MavenLocalPomMetadataSource.java new file mode 100644 index 000000000000..a2aaff86f935 --- /dev/null +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/repositories/metadata/MavenLocalPomMetadataSource.java @@ -0,0 +1,46 @@ +/* + * Copyright 2017 the original author or authors. + * + * Licensed 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.gradle.api.internal.artifacts.repositories.metadata; + +import org.gradle.api.artifacts.ModuleIdentifier; +import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.MetaDataParser; +import org.gradle.api.internal.artifacts.repositories.maven.MavenMetadataLoader; +import org.gradle.api.internal.artifacts.repositories.resolver.ResourcePattern; +import org.gradle.api.internal.artifacts.repositories.resolver.VersionLister; +import org.gradle.internal.component.external.model.ModuleDependencyMetadata; +import org.gradle.internal.component.external.model.maven.MutableMavenModuleResolveMetadata; +import org.gradle.internal.component.model.IvyArtifactName; +import org.gradle.internal.resolve.result.BuildableModuleVersionListingResolveResult; +import org.gradle.internal.resource.local.FileResourceRepository; + +import javax.inject.Inject; +import java.util.List; + +import static org.gradle.api.internal.artifacts.repositories.metadata.DefaultArtifactMetadataSource.getPrimaryDependencyArtifact; + +public class MavenLocalPomMetadataSource extends DefaultMavenPomMetadataSource { + + @Inject + public MavenLocalPomMetadataSource(MetadataArtifactProvider metadataArtifactProvider, MetaDataParser pomParser, FileResourceRepository fileResourceRepository, MavenMetadataValidator validator, MavenMetadataLoader mavenMetadataLoader) { + super(metadataArtifactProvider, pomParser, fileResourceRepository, validator, mavenMetadataLoader); + } + + @Override + public void listModuleVersions(ModuleDependencyMetadata dependency, ModuleIdentifier module, List ivyPatterns, List artifactPatterns, VersionLister versionLister, BuildableModuleVersionListingResolveResult result) { + IvyArtifactName dependencyArtifact = getPrimaryDependencyArtifact(dependency); + versionLister.listVersions(module, dependencyArtifact, artifactPatterns, result); + } +}