构建多语言项目系统

时间:2011-11-14 21:53:42

标签: maven makefile

我准备开始一个主要用于试验语言的项目,但也有一些有用的东西。它将包含一个用Erlang编写的服务器应用程序和多种语言的客户端库。最初我想用Java,Ruby和Python编写客户端。实际的沟通协议将是Thrift。

我正在寻找一个构建系统,它允许我一次构建服务器和所有客户端库,以每种语言运行单元测试,然后以任何方式打包某种可释放的工件。每种语言的“标准”。

这意味着一个Jar for Java,一个RubyGem和一个用于Python的分发/ setuptools tarball。 Erlang可能也有一些东西,但我还不熟悉它。它还应该能够运行Thrift编译器来生成每种语言的各种Thrift-stub。

在开始时垫上是Maven。我相当肯定Maven可以做我所需要的一切,但我担心它太过于以Java为中心,而且我需要为我需要添加的每种新语言留下大量的工作。

2 个答案:

答案 0 :(得分:0)

应该知道每种语言的要求是什么,以创建可交付的工件。

如果将文件从这里复制到那里并压缩它就足以覆盖大多数脚本语言了。 但是你最终可能会编写插件以支持自定义打包(这并不复杂,所以如果没有构建系统可能是一个不错的选择)。

它可能不适合每种语言的构建系统来强制maven。所以也许使用可用的特定构建工具并将它们包装在简单的脚本中,并使用持续集成服务器(如bamboo,jenkings / hudson,teamcity,...)执行它们,以使它们按特定顺序构建(伪造'依赖关系) )?

我不知道跨语言系统。

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

还有http://eclipse.org/buckminster/ - 只是为了完整性(没有看过很长时间)

问候

维尔纳

答案 1 :(得分: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更强大。