Visual Studio 2008 C++ プロジェクトのビルド自動化に jenkins を使用しています。本質的には、次の一連の呼び出しです。
devenv solution_name /build configuration_name [/Project project_name]
これは一般的にうまく機能します。
dos ボックスからすべてを実行するために、ProcessBuilder で同じことを行う scala ラッパーを作成しました。動作しますが、問題があります。コンソールに出力がありません。
私の推測では、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)
サブプロセスの出力を記録/出力する方法はありますか?