Skip to content

Commit

Permalink
[SUREFIRE-2154] Get rid of localRepository from surefire mojo paramet…
Browse files Browse the repository at this point in the history
…er, use Resolver API

- not use org.apache.maven.artifact.repository.ArtifactRepository
- use resolver API
  • Loading branch information
slawekjaranowski committed Mar 8, 2023
1 parent 052ce53 commit 2709f76
Show file tree
Hide file tree
Showing 7 changed files with 389 additions and 1,202 deletions.
10 changes: 10 additions & 0 deletions maven-surefire-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@
<artifactId>maven-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.aether</groupId>
<artifactId>aether-util</artifactId>
<!-- tha same version as in Maven 3.2.5 -->
<version>1.0.0.v20140518</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
Expand Down Expand Up @@ -160,6 +166,10 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.sisu</groupId>
<artifactId>sisu-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Properties;
import java.util.Set;
import java.util.SortedSet;
Expand All @@ -45,8 +46,6 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
Expand Down Expand Up @@ -77,7 +76,6 @@
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
import org.apache.maven.surefire.api.booter.ProviderParameterNames;
import org.apache.maven.surefire.api.booter.Shutdown;
Expand Down Expand Up @@ -282,13 +280,6 @@ public abstract class AbstractSurefireMojo extends AbstractMojo implements Suref
@Parameter(defaultValue = "${project.build.testSourceDirectory}")
private File testSourceDirectory;

/**
* ArtifactRepository of the localRepository. To obtain the directory of localRepository in unit tests use
* System.getProperty("localRepository").
*/
@Parameter(defaultValue = "${localRepository}", required = true, readonly = true)
private ArtifactRepository localRepository;

/**
* List of System properties to pass to a provider.
*
Expand Down Expand Up @@ -635,17 +626,6 @@ public abstract class AbstractSurefireMojo extends AbstractMojo implements Suref
@Parameter(property = "trimStackTrace", defaultValue = "false")
private boolean trimStackTrace;

/**
* The remote plugin repositories declared in the POM.
*
* @since 2.2
*/
@Parameter(defaultValue = "${project.pluginArtifactRepositories}", readonly = true, required = true)
private List<ArtifactRepository> remoteRepositories;

@Parameter(defaultValue = "${project.remoteArtifactRepositories}", required = true, readonly = true)
private List<ArtifactRepository> projectRemoteRepositories;

/**
* Flag to disable the generation of report files in xml format.
* Deprecated since 3.0.0-M4.
Expand Down Expand Up @@ -771,15 +751,9 @@ public abstract class AbstractSurefireMojo extends AbstractMojo implements Suref
@Component
private LocationManager locationManager;

@Component
private RepositorySystem repositorySystem;

@Component
private ProviderDetector providerDetector;

@Component
private ResolutionErrorHandler resolutionErrorHandler;

private Toolchain toolchain;

private int effectiveForkCount = -1;
Expand Down Expand Up @@ -855,6 +829,7 @@ private String getDefaultExcludes() {
return "**/*$*";
}

@Component(role = SurefireDependencyResolver.class)
private SurefireDependencyResolver surefireDependencyResolver;

private TestListResolver specificTests;
Expand Down Expand Up @@ -905,6 +880,10 @@ void setLogger(Logger logger) {
this.logger = logger;
}

void setSurefireDependencyResolver(SurefireDependencyResolver surefireDependencyResolver) {
this.surefireDependencyResolver = surefireDependencyResolver;
}

@Nonnull
protected final PluginConsoleLogger getConsoleLogger() {
if (consoleLogger == null) {
Expand Down Expand Up @@ -952,15 +931,6 @@ private Toolchain getToolchain() throws MojoFailureException {
}

private void setupStuff() throws MojoFailureException {
surefireDependencyResolver = new SurefireDependencyResolver(
getRepositorySystem(),
getConsoleLogger(),
getLocalRepository(),
getRemoteRepositories(),
getProjectRemoteRepositories(),
resolutionErrorHandler,
getPluginName(),
getSession().isOffline());

if (getBooterArtifact() == null) {
throw new RuntimeException("Unable to locate surefire-booter in the list of plugin artifacts");
Expand Down Expand Up @@ -1125,7 +1095,7 @@ private SurefireProperties setupProperties() {
getSystemProperties(), getSystemPropertyVariables(), getUserProperties(), sysProps);

result.setProperty("basedir", getBasedir().getAbsolutePath());
result.setProperty("localRepository", getLocalRepository().getBasedir());
result.setProperty("localRepository", getLocalRepositoryPath());
if (isForking()) {
for (Object o : result.propertiesThatCannotBeSetASystemProperties()) {
if (getArgLine() == null || !getArgLine().contains("-D" + o + "=")) {
Expand Down Expand Up @@ -1269,14 +1239,6 @@ protected void logReportsDirectory() {
logDebugOrCliShowErrors(capitalizeFirstLetter(getPluginName()) + " report directory: " + getReportsDirectory());
}

public RepositorySystem getRepositorySystem() {
return repositorySystem;
}

public void setRepositorySystem(RepositorySystem repositorySystem) {
this.repositorySystem = repositorySystem;
}

private boolean existsModuleDescriptor(ResolvePathResultWrapper resolvedJavaModularityResult) {
return resolvedJavaModularityResult.getResolvePathResult() != null;
}
Expand Down Expand Up @@ -2467,7 +2429,7 @@ private String getConfigChecksum() {
checksum.add(getSkipAfterFailureCount());
checksum.add(getShutdown());
checksum.add(getExcludes());
checksum.add(getLocalRepository());
checksum.add(getLocalRepositoryPath());
checksum.add(getSystemProperties());
checksum.add(getSystemPropertyVariables());
checksum.add(getSystemPropertiesFile());
Expand Down Expand Up @@ -2505,8 +2467,6 @@ private String getConfigChecksum() {
checksum.add(getParallel());
checksum.add(isParallelOptimized());
checksum.add(isTrimStackTrace());
checksum.add(getRemoteRepositories());
checksum.add(getProjectRemoteRepositories());
checksum.add(isDisableXmlReport());
checksum.add(isUseSystemClassLoader());
checksum.add(isUseManifestOnlyJar());
Expand Down Expand Up @@ -2610,13 +2570,9 @@ private Classpath getArtifactClasspath(Artifact surefireArtifact) throws MojoExe
Classpath existing = classpathCache.getCachedClassPath(surefireArtifact.getArtifactId());
if (existing == null) {
List<String> items = new ArrayList<>();
Set<Artifact> booterArtifacts = surefireDependencyResolver
.resolvePluginArtifact(surefireArtifact)
.getArtifacts();
Set<Artifact> booterArtifacts = surefireDependencyResolver.resolveArtifacts(
session.getRepositorySession(), project.getRemotePluginRepositories(), surefireArtifact);
for (Artifact artifact : booterArtifacts) {
getConsoleLogger()
.debug("Adding to " + getPluginName() + " booter test classpath: "
+ artifact.getFile().getAbsolutePath() + " Scope: " + artifact.getScope());
items.add(artifact.getFile().getAbsolutePath());
}
existing = new Classpath(items);
Expand Down Expand Up @@ -2797,7 +2753,8 @@ public List<String[]> getJpmsArguments(@Nonnull ProviderRequirements forkRequire
public Set<Artifact> getProviderClasspath() throws MojoExecutionException {
Artifact surefireArtifact = getBooterArtifact();
String version = surefireArtifact.getBaseVersion();
return surefireDependencyResolver.getProviderClasspath("surefire-testng", version);
return surefireDependencyResolver.getProviderClasspath(
session.getRepositorySession(), project.getRemotePluginRepositories(), "surefire-testng", version);
}
}

Expand Down Expand Up @@ -2828,7 +2785,8 @@ public Set<Artifact> getProviderClasspath() throws MojoExecutionException {
// add the JUnit provider as default - it doesn't require JUnit to be present,
// since it supports POJO tests.
String version = getBooterArtifact().getBaseVersion();
return surefireDependencyResolver.getProviderClasspath("surefire-junit3", version);
return surefireDependencyResolver.getProviderClasspath(
session.getRepositorySession(), project.getRemotePluginRepositories(), "surefire-junit3", version);
}
}

Expand Down Expand Up @@ -2866,7 +2824,8 @@ public List<String[]> getJpmsArguments(@Nonnull ProviderRequirements forkRequire
@Nonnull
public Set<Artifact> getProviderClasspath() throws MojoExecutionException {
String version = getBooterArtifact().getBaseVersion();
return surefireDependencyResolver.getProviderClasspath("surefire-junit4", version);
return surefireDependencyResolver.getProviderClasspath(
session.getRepositorySession(), project.getRemotePluginRepositories(), "surefire-junit4", version);
}
}

Expand Down Expand Up @@ -2915,13 +2874,19 @@ public List<String[]> getJpmsArguments(@Nonnull ProviderRequirements forkRequire
@Nonnull
public Set<Artifact> getProviderClasspath() throws MojoExecutionException {
String surefireVersion = getBooterArtifact().getBaseVersion();
Map<String, Artifact> providerArtifacts =
surefireDependencyResolver.getProviderClasspathAsMap("surefire-junit-platform", surefireVersion);
Map<String, Artifact> providerArtifacts = surefireDependencyResolver.getProviderClasspathAsMap(
session.getRepositorySession(),
project.getRemotePluginRepositories(),
"surefire-junit-platform",
surefireVersion);
Map<String, Artifact> testDeps = testClasspath.getTestDependencies();

Plugin plugin = getPluginDescriptor().getPlugin();
Map<String, Artifact> pluginDeps =
surefireDependencyResolver.resolvePluginDependencies(plugin, getPluginArtifactMap());
Map<String, Artifact> pluginDeps = surefireDependencyResolver.resolvePluginDependencies(
session.getRepositorySession(),
project.getRemotePluginRepositories(),
plugin,
getPluginArtifactMap());

if (hasDependencyPlatformEngine(pluginDeps)) {
providerArtifacts.putAll(pluginDeps);
Expand Down Expand Up @@ -3006,8 +2971,8 @@ private Set<Artifact> resolve(String g, String a, String v, String c, String t)
ArtifactHandler handler = junitPlatformArtifact.getArtifactHandler();
Artifact artifact = new DefaultArtifact(g, a, v, null, t, c, handler);
getConsoleLogger().debug("Resolving artifact " + g + ":" + a + ":" + v);
Set<Artifact> r =
surefireDependencyResolver.resolveProjectArtifact(artifact).getArtifacts();
Set<Artifact> r = surefireDependencyResolver.resolveArtifacts(
session.getRepositorySession(), project.getRemoteProjectRepositories(), artifact);
getConsoleLogger().debug("Resolved artifact " + g + ":" + a + ":" + v + " to " + r);
return r;
}
Expand Down Expand Up @@ -3071,7 +3036,8 @@ public List<String[]> getJpmsArguments(@Nonnull ProviderRequirements forkRequire
@Nonnull
public Set<Artifact> getProviderClasspath() throws MojoExecutionException {
String version = getBooterArtifact().getBaseVersion();
return surefireDependencyResolver.getProviderClasspath("surefire-junit47", version);
return surefireDependencyResolver.getProviderClasspath(
session.getRepositorySession(), project.getRemotePluginRepositories(), "surefire-junit47", version);
}
}

Expand Down Expand Up @@ -3118,8 +3084,11 @@ public List<String[]> getJpmsArguments(@Nonnull ProviderRequirements forkRequire
@Nonnull
public Set<Artifact> getProviderClasspath() throws MojoExecutionException {
Plugin plugin = getPluginDescriptor().getPlugin();
Map<String, Artifact> providerArtifacts =
surefireDependencyResolver.resolvePluginDependencies(plugin, getPluginArtifactMap());
Map<String, Artifact> providerArtifacts = surefireDependencyResolver.resolvePluginDependencies(
session.getRepositorySession(),
project.getRemotePluginRepositories(),
plugin,
getPluginArtifactMap());
return new LinkedHashSet<>(providerArtifacts.values());
}
}
Expand All @@ -3140,13 +3109,11 @@ File createSurefireBootDirectoryInTemp() {
}

@Override
public ArtifactRepository getLocalRepository() {
return localRepository;
}

@Override
public void setLocalRepository(ArtifactRepository localRepository) {
this.localRepository = localRepository;
public String getLocalRepositoryPath() {
return Optional.ofNullable(
session.getRepositorySession().getLocalRepository().getBasedir())
.map(File::getAbsolutePath)
.orElse(".");
}

public Properties getSystemProperties() {
Expand Down Expand Up @@ -3383,24 +3350,6 @@ public void setTrimStackTrace(boolean trimStackTrace) {
this.trimStackTrace = trimStackTrace;
}

public List<ArtifactRepository> getProjectRemoteRepositories() {
return projectRemoteRepositories;
}

@SuppressWarnings("UnusedDeclaration")
public void setProjectRemoteRepositories(List<ArtifactRepository> projectRemoteRepositories) {
this.projectRemoteRepositories = projectRemoteRepositories;
}

public List<ArtifactRepository> getRemoteRepositories() {
return remoteRepositories;
}

@SuppressWarnings("UnusedDeclaration")
public void setRemoteRepositories(List<ArtifactRepository> remoteRepositories) {
this.remoteRepositories = remoteRepositories;
}

public boolean isDisableXmlReport() {
return disableXmlReport;
}
Expand Down Expand Up @@ -3556,10 +3505,6 @@ public void setTempDir(String tempDir) {
this.tempDir = tempDir;
}

public void setResolutionErrorHandler(ResolutionErrorHandler resolutionErrorHandler) {
this.resolutionErrorHandler = resolutionErrorHandler;
}

private static final class ClasspathCache {
private final Map<String, Classpath> classpaths = new HashMap<>(4);

Expand Down

0 comments on commit 2709f76

Please sign in to comment.