diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml b/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml index fb39f5039..13c36600f 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml +++ b/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml @@ -141,5 +141,10 @@ junit-jupiter-api test + + org.junit.jupiter + junit-jupiter-params + test + diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DependencyHierarchyWithRanges.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DependencyHierarchyWithRanges.java index 56aa2a539..12f2f5ff7 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DependencyHierarchyWithRanges.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DependencyHierarchyWithRanges.java @@ -53,7 +53,7 @@ public static void main(String[] args) throws Exception { System.out.println(DependencyHierarchyWithRanges.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args))) { - SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system); + SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system, Booter.selectFs(args)); sessionBuilder.setChecksumPolicy(RepositoryPolicy.CHECKSUM_POLICY_IGNORE); // to not bother with checksums sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true); sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DeployArtifacts.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DeployArtifacts.java index fcdd99644..fc141c935 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DeployArtifacts.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/DeployArtifacts.java @@ -44,8 +44,8 @@ public static void main(String[] args) throws Exception { System.out.println(DeployArtifacts.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args)); - CloseableSession session = - Booter.newRepositorySystemSession(system).build()) { + CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) + .build()) { Artifact jarArtifact = new DefaultArtifact("test", "org.apache.maven.aether.examples", "", "jar", "0.1-SNAPSHOT"); jarArtifact = jarArtifact.setPath(new File("src/main/data/demo.jar").toPath()); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindAvailableVersions.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindAvailableVersions.java index ced5cad09..d1232b1e4 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindAvailableVersions.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindAvailableVersions.java @@ -44,8 +44,8 @@ public static void main(String[] args) throws Exception { System.out.println(FindAvailableVersions.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args)); - CloseableSession session = - Booter.newRepositorySystemSession(system).build()) { + CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) + .build()) { Artifact artifact = new DefaultArtifact("org.apache.maven.resolver:maven-resolver-util:[0,)"); VersionRangeRequest rangeRequest = new VersionRangeRequest(); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindNewestVersion.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindNewestVersion.java index c92e9b369..94f46fd0d 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindNewestVersion.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/FindNewestVersion.java @@ -41,8 +41,8 @@ public static void main(String[] args) throws Exception { System.out.println(FindNewestVersion.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args)); - CloseableSession session = - Booter.newRepositorySystemSession(system).build()) { + CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) + .build()) { Artifact artifact = new DefaultArtifact("org.apache.maven.resolver:maven-resolver-util:[0,)"); VersionRangeRequest rangeRequest = new VersionRangeRequest(); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchy.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchy.java index 28f6c6700..3b337e08d 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchy.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchy.java @@ -52,7 +52,7 @@ public static void main(String[] args) throws Exception { System.out.println(GetDependencyHierarchy.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args))) { - SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system); + SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system, Booter.selectFs(args)); sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true); sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true); try (CloseableSession session = sessionBuilder.build()) { diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflicts.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflicts.java index 7d80b1fde..dfbd84020 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflicts.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflicts.java @@ -54,7 +54,7 @@ public static void main(String[] args) throws Exception { // incompatible versions: two incompatible versions present in graph try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args))) { - SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system); + SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system, Booter.selectFs(args)); sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true); sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true); try (CloseableSession session = sessionBuilder @@ -99,7 +99,7 @@ public static void main(String[] args) throws Exception { // dependency divergence: multiple versions of same GA present in graph try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args))) { - SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system); + SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system, Booter.selectFs(args)); sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true); sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true); try (CloseableSession session = sessionBuilder diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflictsStrategies.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflictsStrategies.java index 870860d31..59ba857f0 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflictsStrategies.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyHierarchyWithConflictsStrategies.java @@ -82,7 +82,7 @@ private static void runItWithStrategy(String[] args, String selectionStrategy, C System.out.println(); System.out.println(selectionStrategy); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args))) { - SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system); + SessionBuilder sessionBuilder = Booter.newRepositorySystemSession(system, Booter.selectFs(args)); sessionBuilder.setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, ConflictResolver.Verbosity.STANDARD); sessionBuilder.setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true); sessionBuilder.setConfigProperty( diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyTree.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyTree.java index dd2ed02ce..0cf08d0cc 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyTree.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDependencyTree.java @@ -42,8 +42,8 @@ public static void main(String[] args) throws Exception { System.out.println(GetDependencyTree.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args)); - CloseableSession session = - Booter.newRepositorySystemSession(system).build()) { + CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) + .build()) { Artifact artifact = new DefaultArtifact("org.apache.maven:maven-resolver-provider:3.6.1"); CollectRequest collectRequest = new CollectRequest(); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDirectDependencies.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDirectDependencies.java index 5e82a44b0..c4e32e8ec 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDirectDependencies.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/GetDirectDependencies.java @@ -42,8 +42,8 @@ public static void main(String[] args) throws Exception { System.out.println(GetDirectDependencies.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args)); - CloseableSession session = - Booter.newRepositorySystemSession(system).build()) { + CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) + .build()) { Artifact artifact = new DefaultArtifact("org.apache.maven.resolver:maven-resolver-impl:1.3.3"); ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest(); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/InstallArtifacts.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/InstallArtifacts.java index d285f10b5..80ffc1d22 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/InstallArtifacts.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/InstallArtifacts.java @@ -43,8 +43,8 @@ public static void main(String[] args) throws Exception { System.out.println(InstallArtifacts.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args)); - CloseableSession session = - Booter.newRepositorySystemSession(system).build()) { + CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) + .build()) { Artifact jarArtifact = new DefaultArtifact("test", "org.apache.maven.resolver.examples", "", "jar", "0.1-SNAPSHOT"); jarArtifact = jarArtifact.setPath(new File("src/main/data/demo.jar").toPath()); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveArtifact.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveArtifact.java index b41a10ab8..ce77e0fc2 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveArtifact.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveArtifact.java @@ -46,8 +46,8 @@ public static void main(String[] args) throws Exception { ArtifactRequest artifactRequest; ArtifactResult artifactResult; - try (CloseableSession session = - Booter.newRepositorySystemSession(system).build()) { + try (CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) + .build()) { artifact = new DefaultArtifact("org.apache.maven.resolver:maven-resolver-util:1.3.3"); artifactRequest = new ArtifactRequest(); @@ -62,7 +62,7 @@ public static void main(String[] args) throws Exception { } // signature - try (CloseableSession session = Booter.newRepositorySystemSession(system) + try (CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) .setChecksumPolicy(RepositoryPolicy.CHECKSUM_POLICY_FAIL) .build()) { artifact = new DefaultArtifact("org.apache.maven.resolver:maven-resolver-util:jar.asc:1.3.3"); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependencies.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependencies.java index a606c3524..007af9448 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependencies.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependencies.java @@ -48,8 +48,8 @@ public static void main(String[] args) throws Exception { System.out.println(ResolveTransitiveDependencies.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args)); - CloseableSession session = - Booter.newRepositorySystemSession(system).build()) { + CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) + .build()) { Artifact artifact = new DefaultArtifact("org.apache.maven.resolver:maven-resolver-impl:1.3.3"); DependencyFilter classpathFilter = DependencyFilterUtils.classpathFilter(JavaScopes.COMPILE); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ReverseDependencyTree.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ReverseDependencyTree.java index b730e4289..75841a987 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ReverseDependencyTree.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ReverseDependencyTree.java @@ -45,7 +45,7 @@ public static void main(String[] args) throws Exception { System.out.println(ReverseDependencyTree.class.getSimpleName()); try (RepositorySystem system = Booter.newRepositorySystem(Booter.selectFactory(args))) { - try (CloseableSession session = Booter.newRepositorySystemSession(system) + try (CloseableSession session = Booter.newRepositorySystemSession(system, Booter.selectFs(args)) .withRepositoryListener(new ReverseTreeRepositoryListener()) .setConfigProperty(ConflictResolver.CONFIG_PROP_VERBOSE, true) .setConfigProperty(DependencyManagerUtils.CONFIG_PROP_VERBOSE, true) diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java index a3c9b8fe7..b44f4011b 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java @@ -20,7 +20,6 @@ import java.io.ByteArrayOutputStream; import java.io.PrintStream; -import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import org.apache.maven.resolver.examples.util.Booter; @@ -48,20 +47,23 @@ /** */ public class Resolver { + private final String[] args; + private final String remoteRepository; private final RepositorySystem repositorySystem; private final LocalRepository localRepository; - public Resolver(String factory, String remoteRepository, String localRepository) { + public Resolver(String[] args, String remoteRepository, String localRepository) { + this.args = args; this.remoteRepository = remoteRepository; - this.repositorySystem = Booter.newRepositorySystem(factory); + this.repositorySystem = Booter.newRepositorySystem(Booter.selectFactory(args)); this.localRepository = new LocalRepository(localRepository); } private RepositorySystemSession newSession() { - return Booter.newRepositorySystemSession(repositorySystem) + return Booter.newRepositorySystemSession(repositorySystem, Booter.selectFs(args)) .withLocalRepositories(localRepository) .setRepositoryListener(null) .setTransferListener(null) @@ -123,13 +125,9 @@ public void deploy(Artifact artifact, Artifact pom, String remoteRepository) thr } private void displayTree(DependencyNode node, StringBuilder sb) { - try { - ByteArrayOutputStream os = new ByteArrayOutputStream(1024); - PrintStream ps = new PrintStream(os, true, StandardCharsets.UTF_8.name()); - node.accept(new DependencyGraphDumper(ps::println)); - sb.append(os); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } + ByteArrayOutputStream os = new ByteArrayOutputStream(1024); + PrintStream ps = new PrintStream(os, true, StandardCharsets.UTF_8); + node.accept(new DependencyGraphDumper(ps::println)); + sb.append(os); } } diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java index 889161b93..7c0e70a46 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java @@ -21,7 +21,6 @@ import java.io.File; import java.util.List; -import org.apache.maven.resolver.examples.util.Booter; import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.deployment.DeploymentException; @@ -38,8 +37,7 @@ public static void main(String[] args) throws Exception { System.out.println("------------------------------------------------------------"); System.out.println(ResolverDemo.class.getSimpleName()); - Resolver resolver = new Resolver( - Booter.selectFactory(args), "https://repo.maven.apache.org/maven2/", "target/resolver-demo-repo"); + Resolver resolver = new Resolver(args, "https://repo.maven.apache.org/maven2/", "target/resolver-demo-repo"); ResolverResult result = resolver.resolve("junit", "junit", "4.13.2"); System.out.println("Result:"); @@ -48,9 +46,9 @@ public static void main(String[] args) throws Exception { System.out.println("root=" + result.getRoot()); } - public void resolve(final String factory) throws DependencyResolutionException { + public void resolve(String[] args) throws DependencyResolutionException { Resolver resolver = - new Resolver(factory, "http://localhost:8081/nexus/content/groups/public", "target/aether-repo"); + new Resolver(args, "http://localhost:8081/nexus/content/groups/public", "target/aether-repo"); ResolverResult result = resolver.resolve("com.mycompany.app", "super-app", "1.0"); @@ -67,9 +65,9 @@ public void resolve(final String factory) throws DependencyResolutionException { String classpath = result.getResolvedClassPath(); } - public void installAndDeploy(final String factory) throws InstallationException, DeploymentException { + public void installAndDeploy(String[] args) throws InstallationException, DeploymentException { Resolver resolver = - new Resolver(factory, "http://localhost:8081/nexus/content/groups/public", "target/aether-repo"); + new Resolver(args, "http://localhost:8081/nexus/content/groups/public", "target/aether-repo"); Artifact artifact = new DefaultArtifact("com.mycompany.super", "super-core", "jar", "0.1-SNAPSHOT"); artifact = artifact.setFile(new File("jar-from-whatever-process.jar")); diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/util/Booter.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/util/Booter.java index c88016b56..673b39839 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/util/Booter.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/util/Booter.java @@ -18,12 +18,15 @@ */ package org.apache.maven.resolver.examples.util; +import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import com.google.common.jimfs.Configuration; +import com.google.common.jimfs.Jimfs; import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.RepositorySystemSession.SessionBuilder; @@ -36,36 +39,58 @@ * A helper to boot the repository system and a repository system session. */ public class Booter { - public static final String SUPPLIER = "supplier"; + public static final String FACTORY_SUPPLIER = "supplier"; - public static final String SISU = "sisu"; + public static final String FACTORY_SISU = "sisu"; + + public static final String FS_DEFAULT = "default"; + + public static final String FS_JIMFS = "jimfs"; public static final DependencyGraphDumper DUMPER_SOUT = new DependencyGraphDumper(System.out::println); public static String selectFactory(String[] args) { if (args == null || args.length == 0) { - return SUPPLIER; + return FACTORY_SUPPLIER; } else { return args[0]; } } - public static RepositorySystem newRepositorySystem(final String factory) { - switch (factory) { - case SUPPLIER: - return org.apache.maven.resolver.examples.supplier.SupplierRepositorySystemFactory - .newRepositorySystem(); - case SISU: - return org.apache.maven.resolver.examples.sisu.SisuRepositorySystemFactory.newRepositorySystem(); - default: - throw new IllegalArgumentException("Unknown factory: " + factory); + public static String selectFs(String[] args) { + if (args == null || args.length < 2) { + return FS_DEFAULT; + } else { + return args[1]; } } - public static SessionBuilder newRepositorySystemSession(RepositorySystem system) { + public static RepositorySystem newRepositorySystem(final String factory) { + System.out.println("Using factory: " + factory); + return switch (factory) { + case FACTORY_SUPPLIER -> org.apache.maven.resolver.examples.supplier.SupplierRepositorySystemFactory + .newRepositorySystem(); + case FACTORY_SISU -> org.apache.maven.resolver.examples.sisu.SisuRepositorySystemFactory + .newRepositorySystem(); + default -> throw new IllegalArgumentException("Unknown factory: " + factory); + }; + } + + public static SessionBuilder newRepositorySystemSession(RepositorySystem system, String fs) { + System.out.println("Using FS: " + fs); + boolean close; + Path localRepository; + if (FS_JIMFS.equals(fs)) { + close = true; + localRepository = Jimfs.newFileSystem(Configuration.unix()).getPath("/demo"); + } else { + close = false; + localRepository = Path.of("target/example-snippets-repo"); + } + // Path localRepository = Path.of("target/example-snippets-repo"); SessionBuilder result = new SessionBuilderSupplier(system) .get() - .withLocalRepositoryBaseDirectories(Path.of("target/example-snippets-repo")) + .withLocalRepositoryBaseDirectories(localRepository) .setRepositoryListener(new ConsoleRepositoryListener()) .setTransferListener(new ConsoleTransferListener()) .setConfigProperty("aether.generator.gpg.enabled", Boolean.TRUE.toString()) @@ -73,12 +98,21 @@ public static SessionBuilder newRepositorySystemSession(RepositorySystem system) "aether.generator.gpg.keyFilePath", Paths.get("src/main/resources/alice.key") .toAbsolutePath() - .toString()) - .setConfigProperty("aether.syncContext.named.factory", "noop"); + .toString()); // uncomment to generate dirty trees // session.setDependencyGraphTransformer( null ); + if (close) { + result.addOnSessionEndedHandler(() -> { + try { + localRepository.getFileSystem().close(); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + return result; } diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/test/java/org/apache/maven/resolver/examples/AllResolverDemosTest.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/test/java/org/apache/maven/resolver/examples/AllResolverDemosTest.java index 125ccf998..2c4dd66d8 100644 --- a/maven-resolver-demos/maven-resolver-demo-snippets/src/test/java/org/apache/maven/resolver/examples/AllResolverDemosTest.java +++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/test/java/org/apache/maven/resolver/examples/AllResolverDemosTest.java @@ -18,20 +18,26 @@ */ package org.apache.maven.resolver.examples; +import java.util.stream.Stream; + import org.apache.maven.resolver.examples.util.Booter; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; /** * Runs all demos at once as part of UT. */ public class AllResolverDemosTest { - @Test - void supplier() throws Exception { - AllResolverDemos.main(new String[] {Booter.SUPPLIER}); + private static Stream arguments() { + return Stream.of( + Arguments.of(Booter.FACTORY_SUPPLIER, Booter.FS_DEFAULT), + Arguments.of(Booter.FACTORY_SISU, Booter.FS_JIMFS)); } - @Test - void sisu() throws Exception { - AllResolverDemos.main(new String[] {Booter.SISU}); + @ParameterizedTest + @MethodSource("arguments") + void runDemos(String factory, String fs) throws Exception { + AllResolverDemos.main(new String[] {factory, fs}); } } diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/FileUtils.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/FileUtils.java index 52e2348f5..4e4e14b13 100644 --- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/FileUtils.java +++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/FileUtils.java @@ -125,8 +125,9 @@ public static CollocatedTempFile newTempFile(Path file) throws IOException { + Long.toUnsignedString(ThreadLocalRandom.current().nextLong()) + ".tmp"); return new CollocatedTempFile() { private final AtomicBoolean wantsMove = new AtomicBoolean(false); - private final StandardCopyOption copyOption = - FileUtils.ATOMIC_MOVE ? StandardCopyOption.ATOMIC_MOVE : StandardCopyOption.REPLACE_EXISTING; + private final StandardCopyOption[] copyOption = FileUtils.ATOMIC_MOVE + ? new StandardCopyOption[] {StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING} + : new StandardCopyOption[] {StandardCopyOption.REPLACE_EXISTING}; @Override public Path getPath() {