我正在尝试从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);
}
}
}
答案 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