2013-02-26 35 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.