【发布时间】:2011-11-20 06:41:17
【问题描述】:
这方面的文档和示例很少(那些存在的都是无用的)。
我想复制给定 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]
有人知道如何解决这个问题吗?
【问题讨论】:
-
鉴于 pom 只是一个 xml 文件,您可以只使用 dom 库(如 dom4j)和 xpath 表达式来获取所有依赖项 - 只是出于兴趣,您为什么需要这样做?
-
@Romski 做你所说的将不包括传递依赖。我想这样做的原因是因为我正在构建动态可插入系统。我希望 jar 插件的依赖项自动包含在类路径中。
-
在 doxia 中存在宏 - 你能用这个吗? maven.apache.org/doxia/macros/index.html#Snippet_Macro 或者给你写一个拥有的 maven 插件 mojo?如果是这样,也许有一个api可以通过maven项目类获取依赖信息?