//usr/bin/env jbang "$0" "$@" ; exit $? //DEPS info.picocli:picocli:4.2.0 //DEPS org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api:3.1.4 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven:3.1.4 import org.jboss.shrinkwrap.resolver.api.maven.ConfigurableMavenResolverSystem; import org.jboss.shrinkwrap.resolver.api.maven.Maven; import org.jboss.shrinkwrap.resolver.api.maven.ScopeType; import org.jboss.shrinkwrap.resolver.api.maven.filter.MavenResolutionFilter; import org.jboss.shrinkwrap.resolver.api.maven.strategy.MavenResolutionStrategy; import org.jboss.shrinkwrap.resolver.api.maven.strategy.TransitiveExclusionPolicy; import picocli.CommandLine; import picocli.CommandLine.Command; import picocli.CommandLine.Parameters; import java.io.File; import java.util.List; import java.util.concurrent.Callable; @Command(name = "shrinkwrap", mixinStandardHelpOptions = true, version = "shrinkwrap 0.1", description = "shrinkwrap made with jbang") class shrinkwrap implements Callable<Integer> { @Parameters(index = "0", description = "The greeting to print", defaultValue = "World!") private String greeting; public static void main(String... args) { int exitCode = new CommandLine(new shrinkwrap()).execute(args); System.exit(exitCode); } @Override public Integer call() throws Exception { // your business logic goes here... System.out.println("Hello " + greeting); ConfigurableMavenResolverSystem resolver = Maven.configureResolver() .withRemoteRepo("jcenter", "https://jcenter.bintray.com/", "default") .withMavenCentralRepo(false); //System.setProperty("maven.repo.local", Settings.getLocalMavenRepo().toPath().toAbsolutePath().toString()); List<File> artifacts = resolver.resolve("log4j:log4j:1.2.17") .using(new MavenResolutionStrategy() { @Override public TransitiveExclusionPolicy getTransitiveExclusionPolicy() { return new TransitiveExclusionPolicy() { @Override public boolean allowOptional() { return true; } @Override public ScopeType[] getFilteredScopes() { return new ScopeType[]{ScopeType.PROVIDED, ScopeType.TEST}; } }; } @Override public MavenResolutionFilter[] getResolutionFilters() { return new MavenResolutionFilter[0]; } }) .asList(File.class); artifacts.forEach(System.out::println); return CommandLine.ExitCode.OK; } }