play framework2をjenkinsでコンパイルする場合。-Dsbt.log.noformat=trueのオプションをつける
問題
jenkinsでコンパイルする際ののログに以下のように色付きの文字がおかしくログに残る。
0m[[0minfo[0m] [0mLoading project definition from ....
jenkinsで単純に以下のコマンドを実行するようにしていると、色付きの文字がおかしくログに残ってしまいます。
~/play2.1.1/play clean update compile test
解決方法
オプションを追加
play -Dsbt.log.noformat=true clean update compile test
すると色付きでおかしかった文字が問題なく色なしでログに残ります。
[info] Loading project definition from ....
ソース探索
Play20 / framework / src / console / src / main / scala / Console.scalaの200行目あたりに今回の該当する部分がありました。
object Colors { import scala.Console._ lazy val isANSISupported = { Option(System.getProperty("sbt.log.noformat")).map(_ != "true").orElse { Option(System.getProperty("os.name")) .map(_.toLowerCase) .filter(_.contains("windows")) .map(_ => false) }.getOrElse(true) } def red(str: String): String = if (isANSISupported) (RED + str + RESET) else str def blue(str: String): String = if (isANSISupported) (BLUE + str + RESET) else str def cyan(str: String): String = if (isANSISupported) (CYAN + str + RESET) else str def green(str: String): String = if (isANSISupported) (GREEN + str + RESET) else str def magenta(str: String): String = if (isANSISupported) (MAGENTA + str + RESET) else str def white(str: String): String = if (isANSISupported) (WHITE + str + RESET) else str def black(str: String): String = if (isANSISupported) (BLACK + str + RESET) else str def yellow(str: String): String = if (isANSISupported) (YELLOW + str + RESET) else str }
色づけの条件(isANSISupported)に、
Option(System.getProperty("sbt.log.noformat")).map(_ != "true")
とあるので、-Dsbt.log.noformat=trueとしておくことで色づけされなくなります。