多语言项目的构建系统

4

我即将开始一个项目,主要是用来尝试多种语言,但也有一些实用价值。它将包括一个用Erlang编写的服务器应用程序和客户端库在多种语言中编写。最初,我希望使用Java、Ruby和Python编写客户端。实际通信协议将是Thrift。

我正在寻找一个构建系统,可以让我一次性构建服务器和所有客户端库,在每种语言中运行单元测试,然后以每种语言的“标准”方式打包一个可发布的构件。

这意味着Java的Jar文件,Python的RubyGem和distribute/setuptools tarball。Erlang可能也有类似的东西,但我还不熟悉。它还应该能够运行Thrift编译器以生成每种语言中的各种Thrift stub。

首先考虑的是Maven。我相当确定Maven可以满足我的所有需求,但我担心它过于针对Java,而且每次需要添加新语言时会给我留下大量工作。


Make是一种专为构建管理而设计的脚本语言,它将工作委托给编译器、链接器等。如果您知道如何从命令行执行这些操作,使用Make就非常容易。 - Beta
2个回答

0

对于每种编程语言,人们都应该知道创建可交付成果所需的要求。

如果只是从这里复制文件到那里并进行压缩,使用Maven可以涵盖大多数脚本语言。但是,您可能需要编写插件来支持自定义打包(这并不复杂,因此如果没有构建系统,则可以选择这个)。

并不是每种编程语言的构建系统都适用于强制使用Maven。因此,可以使用特定的构建工具,并将其包装在简单的脚本中,然后使用持续集成服务器(例如Bamboo、Jenkings/Hudson、TeamCity等)以特定顺序构建它们(以“伪造”依赖项)。

我不知道有跨语言系统。

Gradle可能更加灵活,因为其方法更加面向脚本。

还有http://eclipse.org/buckminster/-仅供完整性(已经有一段时间没有看了)

敬礼

维纳


我看了一下,发现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将成为你的朋友。Ant有很多任务非常有用。

我已经成功地使用Gant实现了复杂的Java/C++/C构建项目。Groovy脚本编写起来既强大又容易使用。Gradle与Gant类似,在某些方面比Gant更加强大。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接