2009-11-24 109 views
4

我已將Ant配置爲使用AnsiColorLogger。在Mac OS 10.5中,一切都很好。自升級到Snow Leopard後,AnsiColorLoggger不再有效。我看到Ant輸出(無色)一秒鐘,然後它就消失了。有沒有其他人在雪豹工作?其他ANSI顏色在Terminal.app中正常工作(彩色ls輸出,提示中的顏色)。螞蟻的AnsiColorLogger在雪豹問題

另外,這是超級用戶的更好的問題嗎?

回答

6

更新:我已經整理出了這個問題。它與ANT給出的轉義序列適用於linux xterm,但不能被Mac OS X正確解釋。可以過濾ANT輸出以轉換這些序列並恢復彩色輸出。

這個故事的寓意是,這種包裝腳本將實現彩色輸出:

 
# cat /workspace/SDK/bin/ant-wrapper.sh 
/usr/bin/ant -logger org.apache.tools.ant.listener.AnsiColorLogger "[email protected]" | perl -pe 's/(?<=\e\[)2;//g' 

# alias ant='/workspace/SDK/bin/ant-wrapper.sh' 

# ant publish 
(output has lots of pretty colors; well, maybe not so pretty, more like an easter egg) 

原始帖子(和調試步驟):

我有關於AnsiColorLogger類似問題根本不顯示顏色。我不確定作者的意思是「[output出現]一秒鐘,那麼它就會消失」。這在終端上似乎是一個奇怪的問題。

我的盒子:

 
# uname -a 
Darwin Dave-Dopsons-MacBook-Pro.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386 

這是ANT記錄儀,我們使用: http://ant.apache.org/manual/listeners.html#AnsiColorLogger

這裏有一個相關的論壇帖子(試圖給出的建議,但沒有成功):http://ant.1045680.n5.nabble.com/Macosx-and-AnsiColorLogger-td1355310.html

我做了「ant | less」,並且我看到了轉義序列,但仍然沒有顏色:

 
Buildfile: /workspace/Words/words_blackberry/build.xml 
ESC[2;32m 
publish:ESC[m 

仍然受阻於這一點,將你的愛情忠告如果有人得到它在OSX

工作得到它!

所以這裏的彩色ls的輸出結果:

 
# CLICOLOR_FORCE=exfxcxdxbxegedabagacad ls -lGF | less 
total 112 
-rw-r--r-- 1 ddopson admin 6511 May 29 12:41 build.xml 
drwxr-xr-x 6 ddopson admin 204 May 28 23:59 ESC[34meclipse-binESC[mESC[m/ 
lrwxr-xr-x 1 ddopson admin 35 May 23 21:24 ESC[35mfilesESC[mESC[[email protected] -> ../artwork/output/blackberry/files/ 
lrwxr-xr-x 1 ddopson admin 36 May 23 21:20 ESC[35mimagesESC[mESC[[email protected] -> ../artwork/output/blackberry/images/ 

通知轉義序列是如何微妙的不同;他們沒有'2'像螞蟻做...

所以要測試這個理論: ant -logger org.apache.tools.ant.listener.AnsiColorLogger發佈| sed's/2; // g'

...並且輸出是彩色的!勝利!

+0

真棒!這很好。 – Nate 2011-05-30 02:08:18

+0

+1:但我已經找到了一種不使用ant-wrapper.sh文件的方法... – 2011-11-25 13:10:54

3

我已經拿ddopson的知識和擠它轉化爲一個單行:

ant() { command ant -logger org.apache.tools.ant.listener.AnsiColorLogger "[email protected]" | sed 's/2;//g' ; } 

這是通過使用Bash Function。把它放在你的~/.profile文件裏,它會做和ddopson的ant-wrapper.sh一樣的功能,但不需要第二個文件就可以工作。稍微更優雅,更脆弱。

+0

您的正則表達式存在過度匹配的風險。它將刪除所有出現的「2」。從輸出流,這可能很容易合法地發生。例如「構建foo值= 2; foo = bar; z = a」 – 2011-12-01 18:19:33

+0

對於我自己的用途,我更喜歡獨特的可執行文件,因爲我可以將其檢入源代碼管理並共享。但是,如果這不是一個考慮因素,那麼一個bashrc單行就可以很好地工作。 – 2011-12-01 18:22:45

+0

p.s.對於不太熟悉的命令行fu:在這種情況下,「sed」和「perl -pe」基本上是一樣的,運行正則表達式。如果你知道的話,Perl正則表達式會更強大一些。但是,當然,每種語言都有其豐富的功能集。我很熟悉perl,sed幾乎沒有,所以我的偏見很明顯。然而,推動我更喜歡perl over sed的重要原因是Mac OS X(基於BSD)和Linux之間的命令行參數不一致。我發現用perl製作可移植腳本更容易。 YMMV – 2011-12-01 18:31:04