2011-11-14 27 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更强大。