2013-02-26 193 views

回答

2

看看jcabi-aether(我是一个开发),这大约是Sonatype的奥德的包装:

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 
); 
1

你可以在Eclipses Ather中使用DependencyFilter。对于低于样品A complete version可以在这真棒集Aether snippets.

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(); 

UPDATE

版本0.9.0M3的发现是不是与Maven 3.1.0兼容,所以不要用它里面的Maven ,即在一个插件中。

2

假设你正在使用DefaultRepositorySystemSession你可以做到以下几点:

defaultRepositorySystemSession.setDependencySelector(new DependencySelector() { 
    @Override 
    public boolean selectDependency(Dependency dependency) { 
     return true; 
    } 

    @Override 
    public DependencySelector deriveChildSelector(DependencyCollectionContext context) { 
     return this; 
    } 
}); 

然后

CollectResult result = repositorySystem.collectDependencies(defaultRepositorySystemSession, request); 

Here is an example project that does this.