2011-11-20 61 views
3

关于此问题的文档和示例非常少(存在这些文档是无用的)。在Java代码中复制Maven依赖关系

我想复制给定的pom.xml文件的所有依赖关系。通常,我可以在命令行上使用mvn dependency:copy-dependencies或在pom文件中使用maven-dependecy-plugin配置。

但是,我想以编程方式在给定的pom.xml文件上执行此操作。到目前为止,我想,我将需要使用MavenCli

MavenCli cli = new MavenCli(); 
cli.doMain(new String[]{"clean", "dependency:copy-dependencies", "-DincludeScope=runtime"}, "C:\\workspace\\gui", null, null); 

其中"C:\\workspace\\gui"是包含一个pom.xml

,但上面的代码目录使我有以下错误:

[ERROR] Failed to execute goal on project test-pom: Could not resolve dependencies for project gigadot:test-pom:jar:0.5-SNAPSHOT: Failed to collect dependencies for [commons-lang:commons-lang:jar:2.6 (compile), commons-io:commons-io:jar:2.0.1 (compile), org.apache.commons:commons-exec:jar:1.1 (compile), org.apache.commons:commons-math:jar:2.2 (compile), xom:xom:jar:1.2.5 (compile), log4j:log4j:jar:1.2.16 (provided)]: Failed to read artifact descriptor for org.apache.commons:commons-math:jar:2.2: Could not transfer artifact org.apache.commons:commons-math:pom:2.2 from/to central (http://repo1.maven.org/maven2): No connector available to access repository central (http://repo1.maven.org/maven2) of type default using the available factories -> [Help 1] 

有谁知道如何解决这个问题?

+0

也许http://stackoverflow.com/questions/2910162/how-to-get-an-artifact-download-url-via-maven-api可以使一些指针? – Raghuram

+0

鉴于pom只是一个xml文件,您可以使用dom库(如dom4j)和xpath表达式来获取所有依赖项 - 只是出于兴趣,您为什么需要这样做? – Romski

+0

@Romski做你说的话不会包含传递依赖。我想这样做的原因是因为我正在构建动态可插入系统。我想将jar插件的依赖关系自动包含在类路径中。 – gigadot

回答

0

添加这种依赖于MavenCLI项目

<dependencies> 
    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-embedder</artifactId> 
     <version>3.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.aether</groupId> 
     <artifactId>aether-connector-wagon</artifactId> 
     <version>0.9.0.M2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.wagon</groupId> 
     <artifactId>wagon-http-lightweight</artifactId> 
     <version>2.5</version> 
    </dependency> 
</dependencies>