Skip to content

Commit

Permalink
Moved initialization to improve speed
Browse files Browse the repository at this point in the history
  • Loading branch information
infvg authored and infvg committed Jan 16, 2025
1 parent ee19518 commit 263ff8c
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 7 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

<groupId>io.airlift.resolver</groupId>
<artifactId>resolver-root</artifactId>
<version>1.7.1-wxd</version>
<version>1.7.4-wxd</version>
<packaging>pom</packaging>

<description>Resolve the dependencies of Maven coordinates or POM file</description>
Expand Down
2 changes: 1 addition & 1 deletion resolver-integration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>io.airlift.resolver</groupId>
<artifactId>resolver-root</artifactId>
<version>1.7.1-wxd</version>
<version>1.7.4-wxd</version>
</parent>

<groupId>io.airlift.resolver</groupId>
Expand Down
2 changes: 1 addition & 1 deletion resolver/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>io.airlift.resolver</groupId>
<artifactId>resolver-root</artifactId>
<version>1.7.1-wxd</version>
<version>1.7.4-wxd</version>
</parent>

<groupId>io.airlift.resolver</groupId>
Expand Down
27 changes: 23 additions & 4 deletions resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -95,6 +94,10 @@ public class ArtifactResolver
private final DefaultRepositorySystemSession repositorySystemSession;
private final List<RemoteRepository> repositories;

private ProjectBuilder projectBuilder;

private ProjectBuildingRequest builderRequest;

public ArtifactResolver(String localRepositoryDir, String... remoteRepositoryUris)
{
this(localRepositoryDir, Arrays.asList(remoteRepositoryUris));
Expand Down Expand Up @@ -122,6 +125,9 @@ public ArtifactResolver(String localRepositoryDir, List<String> remoteRepository
repositorySystemSession.setTransferListener(new ConsoleTransferListener());
repositorySystemSession.setRepositoryListener(new ConsoleRepositoryListener());

// Recreating ProjectBuilder & ProjectBuilderRequest caused major slowdowns
buildProjectBuilder();

List<RemoteRepository> repositories = new ArrayList<>(remoteRepositoryUris.size());
int index = 0;
for (String repositoryUri : remoteRepositoryUris) {
Expand Down Expand Up @@ -205,9 +211,8 @@ public List<Artifact> 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);
Expand All @@ -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) {
Expand Down

0 comments on commit 263ff8c

Please sign in to comment.