2011-11-14 29 views
2

我準備着手開展一個主要用於語言實驗的項目,但也有一些有用的東西。它將包含一個用Erlang編寫的服務器應用程序和多種語言的客戶端庫。最初我會想用Java,Ruby和Python編寫客戶端。實際的溝通協議將是Thrift。用於多語言項目的構建系統

我正在尋找一個構建系統,它將允許我一次性構建服務器和所有客戶端庫,在每種語言中運行單元測試,然後以任何方式打包某種可釋放的工件每種語言的「標準」。

這意味着Python的Jar,RubyGem和distribute/setuptools tarball。 Erlang可能也有一些東西,但我還不太瞭解。它也應該能夠運行Thrift編譯器來生成每種語言的各種Thrift存根。

在開始的墊子上是Maven。我相當確定Maven可以做我所需要的一切,但是我擔心它太以Java爲中心,並且爲我需要添加的每種新語言留下了大量的工作。

+0

Make是一種爲構建管理而設計的腳本語言;它將工作委託給編譯器,鏈接器等。如果您知道如何從命令行執行這些操作,那麼使用Make – Beta

回答

0

我們應該知道每種語言的要求是什麼,以創建可交付的產品。

如果從這裏複製文件到那裏並且壓縮就足夠了,maven可以覆蓋大部分腳本語言。 但是,您最終可能會編寫插件來支持自定義打包(這並不複雜,因此如果沒有構建系統可能是個不錯的選擇)。

它可能不適合每種語言的構建系統強制對他們的maven。因此,也許使用可用的特定構建工具並將它們包裝在簡單的腳本中,並使用持續集成服務器(如竹子,jenkings/hudson,teamcity等)執行它們,以使它們按特定順序構建(以「假」依賴性)?

我不知道跨語言系統。

Gradle可能更靈活,因爲它的方法更面向腳本。

而且有http://eclipse.org/buckminster/ - 只是爲了完整性(havent有相當長的一段時間看看)

問候

沃納

+0

可以非常容易地執行此操作。我環顧四周,發現Maven具有用於Erlang和Python的插件,並且可能是Ruby。對於我將要使用的第一批幾種語言來說,這解決了「我需要做多少工作才能解決缺乏支持問題」的問題,因此我將此賞賜獎給了這個答案。我並不十分滿意Maven是最好的,但它似乎是目前最適合我的確切用例。 – Epcylon

0
"It will consist of a server-application, written in Erlang, 
and client-libraries in a number of languages. 
Initially I will want to write clients in Java, Ruby and Python. " 

Maven是好的,如果你按照它的方式。這實際上更多的是我的方式或高的方式。 參見:http://community.jboss.org/wiki/MavenVsGradle 對於很多標準的java項目,它實際上非常好。但是如果你需要使用其他的東西,它會很快變得相當複雜。

從您的描述來看,它很快就會變得複雜。

我建議看看gant(groovy + ant)和gradle。您可以從gant和/或gradle調用其他腳本。 JPython,JRuby將成爲你的朋友。螞蟻有很多任務,這將是非常有用的。

我已經使用Gant成功實現了複雜的Java/C++/C構建項目。 Groovy腳本功能強大且易於使用。 Gradle類似,在某些方面比gant更強大。