0

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

devenv solution_name /build configuration_name [/Project project_name]

一般情况下效果很好。

为了在 dos 框中运行所有内容,我编写了一个 scala 包装器,它与 ProcessBuilder 相同。它可以工作,但我有问题,控制台上没有输出。

我的猜测:devenv 启动了一堆进程来并行编译和链接项目。我的scala程序只输出devenv进程的stdout和stderr,没有。子流程的所有其他输出都被射入涅槃。

为了完整起见,源代码段:

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)

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

4

0 回答 0