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