2013-06-02 157 views
2

我在我的辦公室裏看到很多地方使用ant tasks將文件從一個地方移動到另一個地方,並對這些文件執行一些任務。但是,所有這些都可以使用shell scripts完成。Ant任務vs Shell腳本

我的問題是,

在什麼情況下被ant優於shell scripts

使用ant比使用shell scripts做相同的任務有什麼好處。

ant的一個優點是,它可以在所有平臺上工作,除此之外還有什麼performance相關的優點?

+0

'ant'只能在已安裝的平臺上運行,與shell腳本相同。由於'sh'是一個標準工具,它更有可能被安裝,所以我質疑這是'ant'的一個優點。許多開發人員可能編寫不符合標準的shell腳本肯定是個問題,但將其與缺乏可用性等同起來是不正確的。 –

+0

你可以在windows平臺上安裝'sh'嗎?你不能。但是'螞蟻'可以。 – g4ur4v

+0

如果您已經在使用Ant(當您的軟件使用Ant作爲構建工具時經常發生這種情況),請使用Ant任務執行操作。如果您不使用Ant並且想要選擇工具,請選擇shell腳本或其他腳本語言。 – coolcfan

回答

2

你,爲什麼ANT應首選shell腳本的問題有兩個方面:

  1. ANT是取得了廣泛應用,並有可能 開發者的工作站上已安裝的工具。相比其主要前輩 ,使得ANT更加標準化和跨平臺。
  2. ANT是開發人員熟悉的工具。用於構建他們的代碼,以便他們經常擴展ANT腳本以將其應用程序部署爲 。事實上,許多供應商爲此提供ANT任務。

真的沒有性能優勢。 Java對命令行的使用很慢。

但是.....我建議不要演奏「表演」牌。讓我們假裝你的應用程序不支持windows(這很奇怪,因爲Java應用程序應該支持所有的平臺......):我已經看到shell腳本驅動的部署陷入混亂,企圖協調不同unix操作系統命令工作的各種方式。像「tar」,「awk」等命令可能會有細微的不同,這會導致腳本中的其他平臺支持邏輯。

總之我都不會用。我選擇使用groovy作爲通用腳本的混合方法。它是一種基於Java的腳本語言,嵌入了ANT的全部功能。作爲基於Java的腳本語言意味着它可以在所有平臺上工作。爲了公平起見,還應該注意到還有其他語言選擇。 Ruby肯定值得一提,因爲它產生了一套非常值得評估的配置管理技術。 (請參閱ChefPuppet

0

實際上,它歸結爲Windows支持。如果你是在Unix店,不希望引入新的東西給開發者,有兩個備選方案我已經成功使用:使用Git猛砸

  • 普通老式shell腳本。 Git Bash帶有Git windows發行版(http://git-scm.com/)。如果你正在做的自動化,可以啓動shell腳本,像這樣: 「C:\ Program Files文件(x86)的\的Git \ BIN \ sh.exe」 --login -i - ./BUILD

  • 節點腳本。再次,它是一個簡單的安裝程序,它是JavaScript,你可以使用像ShellJS(https://github.com/arturadib/shelljs)的東西來非常接近Unix shell腳本/ Makefiles。