Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用乙醚获取所有maven依赖项?_Maven_Aether - Fatal编程技术网

如何使用乙醚获取所有maven依赖项?

如何使用乙醚获取所有maven依赖项?,maven,aether,Maven,Aether,我正在尝试使用以太获取maven工件的依赖项。我看到一个RepositorySystem.collectDependencies(),但它只获取编译和运行时范围的依赖项。如何获取工件的所有依赖项,包括测试和提供的依赖项?看一看(我是开发人员),这是Sonatype Ether的包装: File repo = this.session.getLocalRepository().getBasedir(); Collection<Artifact> deps = new Aether(th

我正在尝试使用以太获取maven工件的依赖项。我看到一个RepositorySystem.collectDependencies(),但它只获取编译和运行时范围的依赖项。如何获取工件的所有依赖项,包括测试和提供的依赖项?

看一看(我是开发人员),这是Sonatype Ether的包装:

File repo = this.session.getLocalRepository().getBasedir();
Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
  new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
  JavaScopes.RUNTIME
);
File repo=this.session.getLocalRepository().getBasedir();
Collection deps=new-ether(this.getProject(),repo).resolve(
新的DefaultArtifact(“junit”、“junit dep”、“jar”、“4.10”),
JavaScopes.RUNTIME
);
这三个文件:

是一个使用乙醚的独立工作示例

它工作了几个月,然后我突然出现了一个问题,在Mac JRE上它有时会在com.sun:tools.jar上抛出DependencyResolutionException


祝您好运,如果您决定使用它,我将使用maven dependency插件
dependency:build classpath
您可以在Eclipses Ether中使用
DependencyFilter
。下面的一个示例可以在这组很棒的文档中找到

DependencyFilter classpathFilter=DependencyFilterUtils.classpathFilter(JavaScopes.COMPILE,JavaScopes.PROVIDED);
CollectRequest CollectRequest=新CollectRequest();
setRoot(新的依赖项(工件,JavaScopes.COMPILE));
collectRequest.setRepositories(存储库);
DependencyRequest DependencyRequest=新的DependencyRequest(collectRequest,classpathFilter);
列出结果=
system.resolveDependencies(会话,dependencyRequest).getArtifactResults();
更新


版本0.9.0M3与Maven 3.1.0不兼容,因此不要在Maven内部,即在插件中使用它。

假设您使用的是
DefaultRepositorySystemSession
,您可以执行以下操作:

defaultRepositorySystemSession.setDependencySelector(新的DependencySelector(){
@凌驾
公共布尔selectDependency(依赖项){
返回true;
}
@凌驾
公共DependencySelector派生ChildSelector(DependencyCollectionContext){
归还这个;
}
});
然后

CollectResult=repositorySystem.collectDependencies(defaultRepositorySystemSession,request);

看看这个github项目:
它下载所有依赖项,包括测试和提供的。
它使用以太的图书馆来取回它们

DependencyFilter classpathFilter = DependencyFilterUtils.classpathFilter(JavaScopes.COMPILE, JavaScopes.PROVIDED);

CollectRequest collectRequest = new CollectRequest();
collectRequest.setRoot( new Dependency( artifact, JavaScopes.COMPILE ) );
collectRequest.setRepositories(repositories);

DependencyRequest dependencyRequest = new DependencyRequest( collectRequest, classpathFilter );

List<ArtifactResult> artifactResults =
    system.resolveDependencies( session, dependencyRequest ).getArtifactResults();