进程执行和子进程输出的记录

时间:2012-10-12 07:16:11

标签: visual-studio scala build-automation processbuilder

我们使用jenkins进行Visual Studio 2008 C ++项目的构建自动化。 从本质上讲,这是一系列的调用:

devenv solution_name /build configuration_name [/Project project_name]

一般来说效果很好。

为了从dos框中运行所有内容,我编写了一个scala包装器,它与ProcessBuilder一样。它有效,但我有问题,控制台上没有输出。

我的猜测:devenv启动了一系列进程来编译和并行处理项目。我的scala程序只输出devenv进程的stdout和stderr,它是none。子进程的所有其他输出都被射入了必杀技。

为了完整性而源代码片段:

def buildProject(branch: String, mode: Mode) = {

  import scala.sys.process._

  val lb = new ListBuffer[String]()
  lb.append("devenv")
  lb.append(solution)
  lb.append(mode.cmd)
  lb.append(config.asString)
  if (!"".equals(project))
    lb.append(project)

  val printLogger = ProcessLogger(line => println(line), line => println(line))

  val errorLevel = Process(lb.toList, new File(branch, work.sv)) ! printLogger
  if (errorLevel != 0)
    throw new RuntimeException("Project build failed.")
}

用于启动流程的列表如下所示:

List(devenv, Libraries/Libraries.sln, /rebuild, Release)

有没有办法记录/输出子流程的输出?

0 个答案:

没有答案