【问题标题】:Is there a tool pretty much like cmake for Java?有没有类似 cmake 的 Java 工具?
【发布时间】:2011-04-02 04:57:49
【问题描述】:

目前我所知道的最好的 Java 构建工具似乎是 maven,

但它仍然没有提供像 cmake 那么多的灵活性!

有人知道一个类似 cmake 的 java 工具吗?

【问题讨论】:

  • 我会在 stackoverflow.com 上问这个

标签: java build


【解决方案1】:

只是为了您的兴趣。我在 CMake 中开发了 Java 支持。它从 2.8.6 版本开始可用。

另见https://blog.cryptomilk.org/2011/01/15/cmake-java-support/

【讨论】:

    【解决方案2】:

    我所知道的最好的 Java 构建工具 到目前为止似乎是行家,但它仍然 没有提供那么多的灵活性 完全cmake!

    这可能是真的,但我想问你是否真的需要那种“灵活性”。 maven 最大的部分价值在于它标准化了开发。管理源/资源、依赖项的方式、明确定义的生命周期等。

    正是由于这种标准化,您可以轻松连接构建服务器、IDE、自动化测试工具和更多工具。同样重要的是,新开发人员会发现更容易熟悉代码库,因为他们知道预期的结构。

    如果你有一个“灵活”的构建,这些好处将会丢失,但是,你真的会从拥有这样一个“灵活”的构建中获得什么吗?很多人都在使用 maven,对于几乎所有问题,他们已经创建了解决方案。如果您努力使用这些标准化的解决方案,那么构建 IMHO 的麻烦就会少得多。

    如果您确实需要做一些无法以标准化方式完成的罕见情况,您仍然可以将脚本/ant 任务等挂接到 maven 中,甚至编写自定义插件。但我真的怀疑你是否需要这样做。

    【讨论】:

      【解决方案3】:

      这对于 stacoverflow.com 来说可能是一个更好的问题,但我会推荐 Ant。它非常健壮和灵活。

      【讨论】:

        【解决方案4】:

        CMake 没有依赖的概念(仅依赖于源文件对目标文件或共享库的依赖),但没有工件级别(如 Java 中的 jar)或 RPM 等。我将其称为模块依赖。 CMake 没有传递依赖等概念。 CMake 没有定义项目结构的概念(约定优于配置)。 CMake 没有存储库的概念(就像 Maven 一样)。 CMake 不支持集成的单元/集成测试。没有定义的构建生命周期。 CMake 没有发布管理(maven 有)等概念。

        but it still doesn't give so much flexibility as cmake at all!
        

        您在 Maven 中究竟想念什么?

        【讨论】:

        • 有趣的是,人们如何看待同一个现实,却看到完全相反的事物。对所有这些东西“有一个概念”正是它不那么灵活的原因:你不能偏离 Maven 的概念或轻易添加新的概念。虽然 CMake 让您可以轻松地做任何事情,但是让它们一起工作变得越来越困难,构建越复杂。
        • 您所说的灵活性使大型项目中的构建变得一团糟(创建一个单独的开发项目:构建),因为您拥有的灵活性越多,您需要维护的就越多。 Maven 有足够的灵活性来完成它的工作。在某些情况下您可能会达到限制,但您可以简单地创建一个插件。你是说你可以轻松地做任何事情?嗯...另一方面,这意味着您必须首先在项目中自己定义这些或类似的概念,这很耗时。
        • @woky 对不起,但首先你的评论告诉我你从来没有在实际项目中使用过 Maven,你也没有大型项目的经验(200 多个开发人员和 200 多个模块等,如果你称之为玩具项目?? ? 好的..) 根本没有玩具项目。而灵活性取决于您对灵活性的理解。此外,包管理器(如 rpm、yum 等)处理的事情与 Maven 不同。除此之外,Maven 是一种构建工具,而不是发布管理或部署或包管理器工具等(产品、测试等的部署更多的是 puppet 或 chef 等的工作)。
        • 那么,如果它像你说的那么垃圾,为什么不使用 gradle 或 buildr 之类的东西来代替 Maven?
        【解决方案5】:

        Ant 和 maven 是非常棒的构建工具。使用 maven,如果您想进行自定义构建,您可能必须编写自己的 maven 插件,这并不难。有大量在线文档可以创建您自己的插件。制作 maven 插件最酷的地方在于,它很容易在组织中或与开发人员团队共享;共享这些插件,您通常需要托管自己的 Maven 存储库。

        Ant 非常灵活,因为它有一组非常广泛的标签,可以做任何事情,包括构建、运行测试、移动文件、从 repo 中签出代码,甚至在远程服务器上执行命令。在我看来,当您必须进行自定义构建时,使用 ant 会更容易一些。 ant 的问题在于,它更难做成一个可共享的模块,您可以像使用 maven 插件一样共享和配置。

        Ivy 是另一种流行的构建工具,但是我没有使用它的经验。

        【讨论】:

        • Ivy 不是一个粗制滥造的工具,它只是一个与 ant 配合得很好的依赖管理工具(提供了对它的原生支持)。
        猜你喜欢
        • 1970-01-01
        • 2014-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-31
        • 2011-10-12
        相关资源
        最近更新 更多