【问题标题】:Build system for multi-language project多语言项目构建系统
【发布时间】:2011-11-14 21:53:42
【问题描述】:

我正准备着手一个项目,主要是为了试验语言,但也有一些实用性。它将由一个用 Erlang 编写的服务器应用程序和多种语言的客户端库组成。最初,我想用 Java、Ruby 和 Python 编写客户端。实际的通信协议是 Thrift。

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

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

在开始的垫子上是 Maven。我相当肯定 Maven 可以满足我的所有需求,但我担心它过于以 Java 为中心,并且为我需要添加的每一种新语言留下了大量工作。

【问题讨论】:

  • Make 是一种为构建管理而设计的脚本语言;它将工作委托给编译器、链接器等。如果您知道如何从命令行执行这些操作,那么使用 Make 很容易完成

标签: maven makefile


【解决方案1】:

人们应该知道创建可交付工件的每种语言的要求。

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

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

我不知道跨语言系统。

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

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

问候

维尔纳

【讨论】:

  • 我环顾四周,发现 Maven 有 Erlang 和 Python 的插件,可能还有 Ruby。对于我将要使用的前几种语言,这解决了“我需要做多少工作来解决缺乏支持的问题”的问题,因此我奖励这个答案。我不太满意 Maven 是最好的,但它似乎是目前最适合我的确切用例的。
【解决方案2】:
"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 更强大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2019-06-29
    • 2011-02-05
    相关资源
    最近更新 更多