使用Runtime从Java运行maven命令

时间:2015-07-24 10:21:32

标签: java maven runtime

我正在尝试从java main运行maven命令,但它根本不适合我。

当我运行下面的代码时,它在这个主类所在的同一个现有项目上运行maven命令,但我想从这个类运行这个maven命令到任何其他项目文件夹。

请帮忙!

提前致谢!

package com.codecoverage.runner;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


public class MavenCoberturaRunner {

    public static void main(String[] args) throws IOException, InterruptedException {

         Process p = null;

            try {
                p = Runtime.getRuntime().exec("C:/apache-maven-2.0.9/apache-maven-2.0.9/bin/mvn.bat clean cobertura:cobertura -Dcobertura.report.format=xml");
            } catch (IOException e) {
                System.err.println("Error on exec() method");
                e.printStackTrace();
            }

            copy(p.getInputStream(), System.out);
            p.waitFor();

        }

        static void copy(InputStream in, OutputStream out) throws IOException {
            while (true) {
                int c = in.read();
                if (c == -1)
                    break;
                out.write((char) c);
            }
        }
        }

2 个答案:

答案 0 :(得分:2)

您应该使用Runtime.exec(String command, String[] envp, File dir)方法, 它在具有指定环境和工作目录的单独进程中执行指定的字符串命令。

你想要的是设置工作目录,使其指向你需要运行Maven的地方。

答案 1 :(得分:1)

在命令行中使用-f

C:/apache-maven-2.0.9/apache-maven-2.0.9/bin/mvn.bat -f path / to / your / pom.xml clean cobertura:cobertura -Dcobertura.report.format = xml