我一直试图通过以太编程方式下载所有Maven依赖项。我可以获得所有的传递依赖项(来自
https://github.com/apache/maven-resolver/blob/master/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/ResolveTransitiveDependencies.java
但是,因为它没有下载依赖项所需的任何插件。
由于我是Maven的新手,所以这里可能会遗漏一些完全显而易见的内容,但是任何帮助将不胜感激。
如果我尝试使用ResolveTransitiveDependencies.java下载sonarqube插件的依赖项,则会正确下载以下内容。
org\sonarsource\scanner\maven\sonar-maven-plugin\3.6.0.1398\sonar-maven-plugin-3.6.0.1398.jar
org\sonatype\plexus\plexus-sec-dispatcher\1.4\plexus-sec-dispatcher-1.4.jar
org\sonatype\plexus\plexus-cipher\1.4\plexus-cipher-1.4.jar
org\codehaus\plexus\plexus-utils\3.0.22\plexus-utils-3.0.22.jar
org\sonarsource\scanner\api\sonar-scanner-api\2.12.0.1661\sonar-scanner-api-2.12.0.1661.jar
commons-lang\commons-lang\2.6\commons-lang-2.6.jar
但是,它不会下载任何单个传递依赖项POM中的插件。有没有办法从Aether做到这一点?
答案 0 :(得分:0)
您可以尝试Jeka库(https://jeka.dev)来完成此操作。
import dev.jeka.core.api.depmanagement.*;
import java.nio.file.Path;
import java.util.List;
import static dev.jeka.core.api.depmanagement.JkJavaDepScopes.*;
public class SampleDepDownload {
public static void main(String[] args) {
JkDependencySet deps = JkDependencySet.of()
.and("com.googlecode.playn:playn-core:1.4")
.and("com.threerings:tripleplay:1.4")
.withDefaultScopes(COMPILE_AND_RUNTIME);
JkDependencyResolver resolver = JkDependencyResolver.of(JkRepo.ofMavenCentral());
List<Path> libs = resolver.resolve(deps, RUNTIME).getFiles().getEntries();
}
}