diff --git a/mrm-maven-plugin/src/main/java/org/codehaus/mojo/mrm/maven/ProxyArtifactStore.java b/mrm-maven-plugin/src/main/java/org/codehaus/mojo/mrm/maven/ProxyArtifactStore.java index f74f049a..aa41e07b 100644 --- a/mrm-maven-plugin/src/main/java/org/codehaus/mojo/mrm/maven/ProxyArtifactStore.java +++ b/mrm-maven-plugin/src/main/java/org/codehaus/mojo/mrm/maven/ProxyArtifactStore.java @@ -20,12 +20,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -34,25 +29,14 @@ import org.apache.maven.archetype.catalog.ArchetypeCatalog; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata; -import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata; -import org.apache.maven.artifact.repository.metadata.Metadata; -import org.apache.maven.artifact.repository.metadata.Plugin; -import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager; -import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException; -import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata; -import org.apache.maven.artifact.repository.metadata.SnapshotVersion; +import org.apache.maven.artifact.repository.metadata.*; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.logging.Log; import org.codehaus.mojo.mrm.api.ResolverUtils; -import org.codehaus.mojo.mrm.api.maven.ArchetypeCatalogNotFoundException; -import org.codehaus.mojo.mrm.api.maven.Artifact; -import org.codehaus.mojo.mrm.api.maven.ArtifactNotFoundException; -import org.codehaus.mojo.mrm.api.maven.BaseArtifactStore; -import org.codehaus.mojo.mrm.api.maven.MetadataNotFoundException; +import org.codehaus.mojo.mrm.api.maven.*; import org.codehaus.mojo.mrm.plugin.FactoryHelper; import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.repository.RemoteRepository; @@ -263,66 +247,13 @@ public void set(Artifact artifact, InputStream content) { @Override public Metadata getMetadata(String path) throws MetadataNotFoundException { path = StringUtils.strip(path, "/"); - int index = path.lastIndexOf('/'); - int index2 = index == -1 ? -1 : path.lastIndexOf('/', index - 1); - - String version = index2 == -1 ? null : path.substring(index + 1); - String artifactId = index2 == -1 ? null : path.substring(index2 + 1, index); - String groupId = index2 == -1 ? null : path.substring(0, index2).replace('/', '.'); - Metadata metadata = new Metadata(); - boolean foundSomething = false; // is this path a groupId:artifactId pair? - if (version != null - && version.endsWith("-SNAPSHOT") - && !StringUtils.isEmpty(artifactId) - && !StringUtils.isEmpty(groupId)) { - org.apache.maven.artifact.Artifact artifact = artifactFactory.createDependencyArtifact( - groupId, artifactId, VersionRange.createFromVersion(version), "pom", null, "compile"); - SnapshotArtifactRepositoryMetadata artifactRepositoryMetadata = - new SnapshotArtifactRepositoryMetadata(artifact); - try { - repositoryMetadataManager.resolve( - artifactRepositoryMetadata, artifactRepositories, session.getLocalRepository()); - - Metadata artifactMetadata = artifactRepositoryMetadata.getMetadata(); - if (artifactMetadata.getVersioning() != null - && artifactMetadata.getVersioning().getSnapshot() != null) { - foundSomething = true; - metadata.setGroupId(groupId); - metadata.setArtifactId(artifactId); - metadata.setVersion(version); - metadata.merge(artifactMetadata); - } - try { - if (artifactMetadata.getVersioning() != null - && !artifactMetadata - .getVersioning() - .getSnapshotVersions() - .isEmpty()) { - // TODO up to and including Maven 3.0.3 we do not get a populated SnapshotVersions - for (SnapshotVersion v : - artifactMetadata.getVersioning().getSnapshotVersions()) { - metadata.getVersioning().addSnapshotVersion(v); - if (v.getVersion().endsWith("-SNAPSHOT")) { - addResolved(new Artifact( - groupId, artifactId, version, v.getClassifier(), v.getExtension())); - } - } - } - } catch (NoSuchMethodError e) { - // ignore Maven 2.x doesn't give us the info - } - } catch (RepositoryMetadataResolutionException e) { - log.debug(e); - } - } - - // is this path a groupId:artifactId pair? - artifactId = index == -1 ? null : path.substring(index + 1); - groupId = index == -1 ? null : path.substring(0, index).replace('/', '.'); + int slashIndex = path.lastIndexOf('/'); + String artifactId = slashIndex == -1 ? null : path.substring(slashIndex + 1); + String groupId = slashIndex == -1 ? null : path.substring(0, slashIndex).replace('/', '.'); if (!StringUtils.isEmpty(artifactId) && !StringUtils.isEmpty(groupId)) { org.apache.maven.artifact.Artifact artifact = artifactFactory.createDependencyArtifact(groupId, artifactId, ANY_VERSION, "pom", null, "compile"); @@ -348,23 +279,6 @@ public Metadata getMetadata(String path) throws MetadataNotFoundException { } } - // if this path a groupId on its own? - groupId = path.replace('/', '.'); - final GroupRepositoryMetadata groupRepositoryMetadata = new GroupRepositoryMetadata(groupId); - try { - repositoryMetadataManager.resolve( - groupRepositoryMetadata, - session.getCurrentProject().getPluginArtifactRepositories(), - session.getLocalRepository()); - foundSomething = true; - metadata.merge(groupRepositoryMetadata.getMetadata()); - for (Plugin plugin : groupRepositoryMetadata.getMetadata().getPlugins()) { - addResolved(path + "/" + plugin.getArtifactId()); - } - } catch (RepositoryMetadataResolutionException e) { - log.debug(e); - } - if (!foundSomething) { throw new MetadataNotFoundException(path); } @@ -399,12 +313,12 @@ public long getMetadataLastModified(String path) throws MetadataNotFoundExceptio @Override public ArchetypeCatalog getArchetypeCatalog() { - return archetypeManager.getDefaultLocalCatalog(); + return archetypeManager.getLocalCatalog(session.getProjectBuildingRequest()); } @Override public long getArchetypeCatalogLastModified() throws ArchetypeCatalogNotFoundException { - if (archetypeManager.getDefaultLocalCatalog() != null) { + if (archetypeManager.getLocalCatalog(session.getProjectBuildingRequest()) != null) { return System.currentTimeMillis(); } else { throw new ArchetypeCatalogNotFoundException(); diff --git a/mrm-maven-plugin/src/test/java/org/codehaus/mojo/mrm/maven/ProxyArtifactStoreTest.java b/mrm-maven-plugin/src/test/java/org/codehaus/mojo/mrm/maven/ProxyArtifactStoreTest.java index 9105c053..f02f9402 100644 --- a/mrm-maven-plugin/src/test/java/org/codehaus/mojo/mrm/maven/ProxyArtifactStoreTest.java +++ b/mrm-maven-plugin/src/test/java/org/codehaus/mojo/mrm/maven/ProxyArtifactStoreTest.java @@ -89,7 +89,7 @@ public void verifyArtifactResolutionExceptionOnGet() throws Exception { @Test(expected = RuntimeException.class) public void verifyArchetypeCatalogNotFoundException() throws Exception { ArchetypeManager archetypeManager = mock(ArchetypeManager.class); - doThrow(RuntimeException.class).when(archetypeManager).getDefaultLocalCatalog(); + doThrow(RuntimeException.class).when(archetypeManager).getLocalCatalog(any()); FactoryHelper factoryHelper = mock(FactoryHelper.class); when(factoryHelper.getRepositorySystem()).then(i -> mock(RepositorySystem.class)); when(factoryHelper.getRepositoryMetadataManager()).then(i -> mock(RepositoryMetadataManager.class)); diff --git a/pom.xml b/pom.xml index 191c5bf4..320993c7 100644 --- a/pom.xml +++ b/pom.xml @@ -150,7 +150,7 @@ org.apache.maven.archetype archetype-common - 2.2 + 3.2.1 commons-io