Skip to content

Commit

Permalink
[SUREFIRE-1957] Get rid of maven-artifact-transfer
Browse files Browse the repository at this point in the history
  • Loading branch information
slawekjaranowski authored and Tibor17 committed Nov 18, 2021
1 parent 3b77fd3 commit 189b0de
Show file tree
Hide file tree
Showing 6 changed files with 278 additions and 493 deletions.
4 changes: 0 additions & 4 deletions maven-surefire-common/pom.xml
Expand Up @@ -62,10 +62,6 @@
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-common-artifact-filters</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-artifact-transfer</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-java</artifactId>
Expand Down
Expand Up @@ -30,7 +30,6 @@
import org.apache.maven.plugin.surefire.extensions.SurefireStatelessReporter;
import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
Expand Down Expand Up @@ -58,7 +57,6 @@
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
import org.apache.maven.surefire.shared.utils.io.FileUtils;
import org.apache.maven.surefire.booter.ClassLoaderConfiguration;
import org.apache.maven.surefire.booter.Classpath;
Expand Down Expand Up @@ -825,9 +823,6 @@ public abstract class AbstractSurefireMojo
@Component
private RepositorySystem repositorySystem;

@Component
private DependencyResolver dependencyResolver;

private Toolchain toolchain;

private int effectiveForkCount = -1;
Expand Down Expand Up @@ -1018,7 +1013,7 @@ private void setupStuff() throws MojoFailureException
getConsoleLogger(), getLocalRepository(),
getRemoteRepositories(),
getProjectRemoteRepositories(),
getPluginName(), getDependencyResolver(),
getPluginName(),
getSession().isOffline() );

if ( getBooterArtifact() == null )
Expand Down Expand Up @@ -1405,16 +1400,6 @@ public void setRepositorySystem( RepositorySystem repositorySystem )
this.repositorySystem = repositorySystem;
}

public DependencyResolver getDependencyResolver()
{
return dependencyResolver;
}

public void setDependencyResolver( DependencyResolver dependencyResolver )
{
this.dependencyResolver = dependencyResolver;
}

private boolean existsModuleDescriptor( ResolvePathResultWrapper resolvedJavaModularityResult )
{
return resolvedJavaModularityResult.getResolvePathResult() != null;
Expand Down Expand Up @@ -3292,10 +3277,9 @@ public Set<Artifact> getProviderClasspath() throws MojoExecutionException
surefireDependencyResolver.getProviderClasspathAsMap( "surefire-junit-platform", surefireVersion );
Map<String, Artifact> testDeps = testClasspath.getTestDependencies();

ProjectBuildingRequest request = getSession().getProjectBuildingRequest();
Plugin plugin = getPluginDescriptor().getPlugin();
Map<String, Artifact> pluginDeps =
surefireDependencyResolver.resolvePluginDependencies( request, plugin, getPluginArtifactMap() );
surefireDependencyResolver.resolvePluginDependencies( plugin, getPluginArtifactMap() );

if ( hasDependencyPlatformEngine( pluginDeps ) )
{
Expand Down Expand Up @@ -3521,10 +3505,9 @@ public List<String[]> getJpmsArguments( @Nonnull ProviderRequirements forkRequir
@Nonnull
public Set<Artifact> getProviderClasspath() throws MojoExecutionException
{
ProjectBuildingRequest request = getSession().getProjectBuildingRequest();
Plugin plugin = getPluginDescriptor().getPlugin();
Map<String, Artifact> providerArtifacts =
surefireDependencyResolver.resolvePluginDependencies( request, plugin, getPluginArtifactMap() );
surefireDependencyResolver.resolvePluginDependencies( plugin, getPluginArtifactMap() );
return new LinkedHashSet<>( providerArtifacts.values() );
}
}
Expand Down
Expand Up @@ -19,6 +19,9 @@
* under the License.
*/

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
Expand All @@ -38,24 +41,15 @@
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult;
import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import static java.util.Arrays.asList;
import static org.apache.maven.artifact.Artifact.SCOPE_COMPILE;
import static org.apache.maven.artifact.Artifact.SCOPE_COMPILE_PLUS_RUNTIME;
import static org.apache.maven.artifact.Artifact.SCOPE_RUNTIME;
import static org.apache.maven.artifact.ArtifactUtils.artifactMapByVersionlessId;
import static org.apache.maven.artifact.versioning.VersionRange.createFromVersionSpec;
import static org.apache.maven.shared.artifact.filter.resolve.ScopeFilter.including;

/**
* Does dependency resolution and artifact handling for the surefire plugin.
Expand All @@ -68,19 +62,19 @@ final class SurefireDependencyResolver
static final String PROVIDER_GROUP_ID = "org.apache.maven.surefire";

private static final String[] PROVIDER_CLASSPATH_ORDER = {
"surefire-junit3",
"surefire-junit4",
"surefire-junit47",
"surefire-testng",
"surefire-junit-platform",
"surefire-api",
"surefire-logger-api",
"surefire-shared-utils",
"common-java5",
"common-junit3",
"common-junit4",
"common-junit48",
"common-testng-utils"
"surefire-junit3",
"surefire-junit4",
"surefire-junit47",
"surefire-testng",
"surefire-junit-platform",
"surefire-api",
"surefire-logger-api",
"surefire-shared-utils",
"common-java5",
"common-junit3",
"common-junit4",
"common-junit48",
"common-testng-utils"
};

private final RepositorySystem repositorySystem;
Expand All @@ -95,23 +89,21 @@ final class SurefireDependencyResolver

private final String pluginName;

private final DependencyResolver dependencyResolver;

private final boolean offline;

SurefireDependencyResolver( RepositorySystem repositorySystem, ConsoleLogger log,
ArtifactRepository localRepository,
List<ArtifactRepository> pluginRemoteRepositories,
List<ArtifactRepository> projectRemoteRepositories, String pluginName,
DependencyResolver dependencyResolver, boolean offline )
List<ArtifactRepository> projectRemoteRepositories,
String pluginName, boolean offline )
{
this.repositorySystem = repositorySystem;
this.log = log;
this.localRepository = localRepository;
this.pluginRemoteRepositories = pluginRemoteRepositories;
this.projectRemoteRepositories = projectRemoteRepositories;
this.pluginName = pluginName;
this.dependencyResolver = dependencyResolver;
this.offline = offline;
}

Expand Down Expand Up @@ -139,33 +131,26 @@ static boolean isWithinVersionSpec( @Nullable Artifact artifact, @Nonnull String
}
}

Map<String, Artifact> resolvePluginDependencies( ProjectBuildingRequest request,
Plugin plugin, Map<String, Artifact> pluginResolvedDependencies )
throws MojoExecutionException
Map<String, Artifact> resolvePluginDependencies( Plugin plugin, Map<String, Artifact> pluginResolvedDependencies )
{
Map<String, Artifact> resolved = new LinkedHashMap<>();
Collection<Dependency> pluginDependencies = plugin.getDependencies();
try
{
Iterable<ArtifactResult> resolvedArtifacts = dependencyResolver.resolveDependencies( request,
pluginDependencies, null, including( RuntimeArtifactFilter.SCOPES ) );

Map<String, Artifact> resolved = new LinkedHashMap<>();
for ( ArtifactResult resolvedArtifact : resolvedArtifacts )
for ( Dependency dependency : pluginDependencies )
{
Artifact dependencyArtifact = repositorySystem.createDependencyArtifact( dependency );
ArtifactResolutionResult artifactResolutionResult = resolvePluginArtifact( dependencyArtifact );
for ( Artifact artifact : artifactResolutionResult.getArtifacts() )
{
Artifact artifact = resolvedArtifact.getArtifact();
String key = artifact.getGroupId() + ":" + artifact.getArtifactId();
Artifact resolvedPluginDependency = pluginResolvedDependencies.get( key );
if ( resolvedPluginDependency != null )
{
resolved.put( key, artifact );
}
}
return resolved;
}
catch ( DependencyResolverException e )
{
throw new MojoExecutionException( e.getLocalizedMessage(), e );
}
return resolved;
}

ArtifactResolutionResult resolvePluginArtifact( Artifact artifact )
Expand All @@ -192,12 +177,12 @@ private ArtifactResolutionResult resolveArtifact( Artifact artifact, List<Artifa
ArtifactFilter filter )
{
ArtifactResolutionRequest request = new ArtifactResolutionRequest()
.setOffline( offline )
.setArtifact( artifact )
.setLocalRepository( localRepository )
.setResolveTransitively( true )
.setCollectionFilter( filter )
.setRemoteRepositories( repositories );
.setOffline( offline )
.setArtifact( artifact )
.setLocalRepository( localRepository )
.setResolveTransitively( true )
.setCollectionFilter( filter )
.setRemoteRepositories( repositories );

return repositorySystem.resolve( request );
}
Expand Down Expand Up @@ -230,6 +215,9 @@ Map<String, Artifact> getProviderClasspathAsMap( String providerArtifactId, Stri
return artifactMapByVersionlessId( getProviderClasspath( providerArtifactId, providerVersion ) );
}

// FIXME
// method argument should be unchanged
// what if providerArtifacts will be unmodifiable
private static Set<Artifact> orderProviderArtifacts( Set<Artifact> providerArtifacts )
{
Set<Artifact> orderedProviderArtifacts = new LinkedHashSet<>();
Expand Down Expand Up @@ -263,7 +251,7 @@ private static Dependency toProviderDependency( String providerArtifactId, Strin
static class RuntimeArtifactFilter implements ArtifactFilter
{
private static final Collection<String> SCOPES =
asList( SCOPE_COMPILE, SCOPE_COMPILE_PLUS_RUNTIME, SCOPE_RUNTIME );
asList( SCOPE_COMPILE, SCOPE_COMPILE_PLUS_RUNTIME, SCOPE_RUNTIME );

private final Artifact filter;

Expand Down

0 comments on commit 189b0de

Please sign in to comment.