使用MavenCli.doMain(maven-embedder)失败进行多次构建

时间:2013-12-16 18:41:46

标签: java maven maven-embedder

我有一个循环的程序:

  1. 结帐
  2. 使用MavenCli构建项目
  3. 使用Findbugs进行分析
  4. 但是,MavenCli.doMain只工作一次并返回1秒钟。

    Pom文件:

            <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>
    

    代码:

       public class AnalysisRunner {
    
        private static final MavenCli MAVEN_CLIENT = new MavenCli();
        private static final String[] MAVEN_BUILD_COMMAND = {"clean", "install"};
    
        public void runMavenBuild() {
            System.out.println(MAVEN_CLIENT.doMain(MAVEN_BUILD_COMMAND, LOCAL_REPOSITORY.getAbsolutePath(), System.out, System.out));
        }
    }
    

    第一次迭代maven的输出:

    0
    

    第二次迭代maven的输出:

    1
    

    另外,我在Maven-embedder来源中发现了这个:

    catch( ExitException e )
             {
                 return e.exitCode;
             }
             catch ( UnrecognizedOptionException e )
             {
                 // pure user error, suppress stack trace
                 return 1;
             }
             catch ( Exception e )
             {
                 CLIReportingUtils.showError( logger, "Error executing Maven.", e, cliRequest.showErrors );
                 return 1;
             }
    

    我认为我忘了关闭smth但是在哪里和哪里?

    我发现的最佳解决方案:

    是使用Maven Invoker而不是maven-embedder。

0 个答案:

没有答案