diff --git a/pom.xml b/pom.xml
index 2767518..a590078 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
io.airlift.resolver
resolver-root
- 1.7.1-wxd
+ 1.7.4-wxd
pom
Resolve the dependencies of Maven coordinates or POM file
diff --git a/resolver-integration/pom.xml b/resolver-integration/pom.xml
index a1ef3b9..3d35ccf 100644
--- a/resolver-integration/pom.xml
+++ b/resolver-integration/pom.xml
@@ -4,7 +4,7 @@
io.airlift.resolver
resolver-root
- 1.7.1-wxd
+ 1.7.4-wxd
io.airlift.resolver
diff --git a/resolver/pom.xml b/resolver/pom.xml
index 9d201d0..9cc5773 100644
--- a/resolver/pom.xml
+++ b/resolver/pom.xml
@@ -4,7 +4,7 @@
io.airlift.resolver
resolver-root
- 1.7.1-wxd
+ 1.7.4-wxd
io.airlift.resolver
diff --git a/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java b/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java
index 4ec33a2..3161374 100644
--- a/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java
+++ b/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java
@@ -47,7 +47,6 @@
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.graph.Exclusion;
import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.impl.DefaultServiceLocator;
import org.eclipse.aether.impl.MetadataGeneratorFactory;
import org.eclipse.aether.impl.ResolverArtifactResolver;
import org.eclipse.aether.impl.VersionRangeResolver;
@@ -95,6 +94,10 @@ public class ArtifactResolver
private final DefaultRepositorySystemSession repositorySystemSession;
private final List repositories;
+ private ProjectBuilder projectBuilder;
+
+ private ProjectBuildingRequest builderRequest;
+
public ArtifactResolver(String localRepositoryDir, String... remoteRepositoryUris)
{
this(localRepositoryDir, Arrays.asList(remoteRepositoryUris));
@@ -122,6 +125,9 @@ public ArtifactResolver(String localRepositoryDir, List remoteRepository
repositorySystemSession.setTransferListener(new ConsoleTransferListener());
repositorySystemSession.setRepositoryListener(new ConsoleRepositoryListener());
+ // Recreating ProjectBuilder & ProjectBuilderRequest caused major slowdowns
+ buildProjectBuilder();
+
List repositories = new ArrayList<>(remoteRepositoryUris.size());
int index = 0;
for (String repositoryUri : remoteRepositoryUris) {
@@ -205,9 +211,8 @@ public List resolvePom(File pomFile)
.collect(toImmutableList());
}
- private MavenProject getMavenProject(File pomFile)
+ private void buildProjectBuilder()
{
- // TODO: move off deprecated org.apache.maven.repository.RepositorySystem (impl is in maven2 compat module)
try {
PlexusContainer container = container();
org.apache.maven.repository.RepositorySystem lrs = container.lookup(org.apache.maven.repository.RepositorySystem.class);
@@ -218,7 +223,21 @@ private MavenProject getMavenProject(File pomFile)
request.setProcessPlugins(false);
request.setLocalRepository(lrs.createDefaultLocalRepository());
request.setRemoteRepositories(Arrays.asList(new ArtifactRepository[] {lrs.createDefaultRemoteRepository()}.clone()));
- ProjectBuildingResult result = projectBuilder.build(pomFile, request);
+ this.projectBuilder = projectBuilder;
+ this.builderRequest = request;
+ }catch (Exception e) {
+ throw new RuntimeException("Error initializing project builder: ", e);
+ }
+ }
+ private MavenProject getMavenProject(File pomFile)
+ {
+ // TODO: move off deprecated org.apache.maven.repository.RepositorySystem (impl is in maven2 compat module)
+ try {
+ if (projectBuilder == null || builderRequest == null)
+ {
+ buildProjectBuilder();
+ }
+ ProjectBuildingResult result = projectBuilder.build(pomFile, builderRequest);
return result.getProject();
}
catch (Exception e) {