【问题标题】:Copy maven dependencies within Java code在 Java 代码中复制 maven 依赖项
【发布时间】: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]

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

【问题讨论】:

  • 或许stackoverflow.com/questions/2910162/…可以指点一下?
  • 鉴于 pom 只是一个 xml 文件,您可以只使用 dom 库(如 dom4j)和 xpath 表达式来获取所有依赖项 - 只是出于兴趣,您为什么需要这样做?
  • @Romski 做你所说的将不包括传递依赖。我想这样做的原因是因为我正在构建动态可插入系统。我希望 jar 插件的依赖项自动包含在类路径中。
  • 在 doxia 中存在宏 - 你能用这个吗? maven.apache.org/doxia/macros/index.html#Snippet_Macro 或者给你写一个拥有的 maven 插件 mojo?如果是这样,也许有一个api可以通过maven项目类获取依赖信息?

标签: java maven


【解决方案1】:

将此依赖项添加到 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    相关资源
    最近更新 更多