如何在MSYS/Git Bash中看到颜色Ant输出?

jwf*_*arn 8 ant msys git-bash

我想使用AnsiColorLoggerAnt获取颜色输出.我在Windows上使用Git Bash.

我试过了:

$ ant -logger org.apache.tools.ant.listener.AnsiColorLogger
Run Code Online (Sandbox Code Playgroud)

但我的输出看起来像:

Buildfile: c:\foo\build.xml
?[2;36m    [junit] Testsuite: org.foo.BarTest?[m
?[2;36m    [junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.188 sec?[m
?[2;36m    [junit] ?[m
?[2;36m    [junit] Testcase: testInherits took 0.175 sec?[m
?[2;36m    [junit]      FAILED?[m
?[2;36m    [junit] subdir not child?[m
?[2;36m    [junit] junit.framework.AssertionFailedError: subdir not child?[m
?[2;36m    [junit]      at org.foo.BarTest.testInherits(BarTest.java:61)?[m
?[2;36m    [junit] ?[m
?[2;31m    [junit] Test org.foo.BarTest FAILED?[m
Run Code Online (Sandbox Code Playgroud)

我知道ANSI颜色至少部分地在Git Bash中起作用,因为命令会ls -ACF --color=auto产生很好的彩色输出.

Ant的诀窍是什么?

jwf*_*arn 8

经过大量的Google搜索和实验,我将几种变体组合成一个适用于Git Bash,Ant和Windows特定组合的解决方案.

将以下行添加到.bashrc文件后重新启动Git Bash :

alias ant='cant'
function cant {
  "ant" -logger org.apache.tools.ant.listener.AnsiColorLogger "$@" \
      2>&1 | perl -pe 's/(?<=\e\[)2;//g'
}
Run Code Online (Sandbox Code Playgroud)

Git Bash Noob提示: .bashrc文件(如果存在)存在于您的主目录中.以下是创建/编辑它的方法:

$ cd
$ notepad .bashrc &
Run Code Online (Sandbox Code Playgroud)


小智 7

设置环境变量ANT_ARGS可能更容易.例如,将它放在你的.bashrc中:

export ANT_ARGS='-logger org.apache.tools.ant.listener.AnsiColorLogger'
Run Code Online (Sandbox Code Playgroud)