java - Maven CLI - 同步项目依赖项

标签 java maven command-line-interface

我有一个 Maven 项目。我想同步/下载所有依赖项以使我的项目在这个意义上得到解决。我想用java制作它,使用 Maven CLI API .

有一个方法应该与“mvn clean validate”相同:

public static void syncProjectDeps(String projectPath) {

    MavenCli cli = new MavenCli();
    int result = cli.doMain(new String[]{"clean", "validate"}, projectPath, System.out, System.out);

    System.out.println(result);

}

但它失败并出现以下异常(没有可用于访问存储库中心的连接器):

INFO] Scanning for projects...
[ERROR]   The project com.mycompany.common:configuration:2.0.3-SNAPSHOT (C:\store\myproject\java\trunk\configuration\pom.xml) has 1 error
 ...
 No connector available to access repository central (http://repo.maven.apache.org/maven2)

似乎没有使用<repositories>我的项目中已经有 pom.xml .

如何让它发挥作用?

最佳答案

好的。看来我找到了答案。

答案在这里:

Can anyone give a good example of using org.apache.maven.cli.MavenCli programattically?

这里:

https://groups.google.com/forum/#!topic/daisy-pipeline-dev/tubf3KXClM4

http://code.google.com/p/phloc-parent-pom/source/browse/trunk/pom.xml?r=47

基本上你应该得到这个 pom.xml (都是关于依赖关系的!):

<!-- maven api-->
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-embedder</artifactId>
            <version>3.0.5</version>
        </dependency>
        <dependency> <!-- https://stackoverflow.com/questions/4206679/can-anyone-give-a-good-example-of-using-org-apache-maven-cli-mavencli-programatt -->
            <groupId>org.sonatype.aether</groupId>
            <artifactId>aether-connector-wagon</artifactId>
            <version>1.13.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-http</artifactId> <!-- https://groups.google.com/forum/#!topic/daisy-pipeline-dev/tubf3KXClM4 -->
            <version>2.1</version>     <!-- http://code.google.com/p/phloc-parent-pom/source/browse/trunk/pom.xml?r=47 -->
        </dependency>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-utils</artifactId>
            <version>3.0.10</version>
        </dependency>

然后,如果您遇到如下错误:

Non-resolvable parent POM: Failure to find com.mycompany.common:commons:pom:2.0.6

然后确保您的父项目使用正确的版本。父级应该具有与真正的本地根 pom.xml 相同的版本。

如果您仍然遇到该错误,那么您的父级路径如下:

 <relativePath>../pom.xml</relativePath>

这实际上是默认值。但在你的情况下可能是

 <relativePath>../../pom.xml</relativePath>

如果你有更深的文件夹结构(就像我一样)


  • 我的客户端代码是:

        System.setProperty("user.home", "C:\\my"); // ~/.m2/repository lives here    
        MavenCli cli = new MavenCli();
    
       // THIS IS IMPORTANT AS WELL  !!!
       int result = cli.doMain(
                    new String[]{"-DincludeScope=runtime", "dependency:copy-dependencies", "clean", "validate"},
                    projectPath,
                    System.out,
                    System.out);
    

它创建:c:/.m2/repository 文件夹。但现在它是空的。

关于java - Maven CLI - 同步项目依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18114667/

相关文章:

java - swagger maven 插件文档未生成

eclipse - 在 Eclipse 中打开使用 CLI 创建的 phonegap 项目的最佳方法

linux - 反向排序文件中的第三个数字列

java - Java 中 Line2D 的 intersectsLine 输出错误

java - 更改colors.xml中颜色的Android文本输入布局

java - Maven 似乎没有将参数传递给 JVM

java - 如何将带有静态方法的 Groovy 特征应用到 Junit 测试类?

java - 使用 SceneBuilder 在 JavaFX 中运行时创建新的 ImageView

java - 在公司代理 HTTP 客户端 java 下进行基本身份验证

javascript - Testrpc 错误:在 Mac 上监听 EADDRINUSE:::8545