【发布时间】:2011-04-02 04:57:49
【问题描述】:
目前我所知道的最好的 Java 构建工具似乎是 maven,
但它仍然没有提供像 cmake 那么多的灵活性!
有人知道一个类似 cmake 的 java 工具吗?
【问题讨论】:
-
我会在 stackoverflow.com 上问这个
目前我所知道的最好的 Java 构建工具似乎是 maven,
但它仍然没有提供像 cmake 那么多的灵活性!
有人知道一个类似 cmake 的 java 工具吗?
【问题讨论】:
只是为了您的兴趣。我在 CMake 中开发了 Java 支持。它从 2.8.6 版本开始可用。
另见https://blog.cryptomilk.org/2011/01/15/cmake-java-support/
【讨论】:
我所知道的最好的 Java 构建工具 到目前为止似乎是行家,但它仍然 没有提供那么多的灵活性 完全cmake!
这可能是真的,但我想问你是否真的需要那种“灵活性”。 maven 最大的部分价值在于它标准化了开发。管理源/资源、依赖项的方式、明确定义的生命周期等。
正是由于这种标准化,您可以轻松连接构建服务器、IDE、自动化测试工具和更多工具。同样重要的是,新开发人员会发现更容易熟悉代码库,因为他们知道预期的结构。
如果你有一个“灵活”的构建,这些好处将会丢失,但是,你真的会从拥有这样一个“灵活”的构建中获得什么吗?很多人都在使用 maven,对于几乎所有问题,他们已经创建了解决方案。如果您努力使用这些标准化的解决方案,那么构建 IMHO 的麻烦就会少得多。
如果您确实需要做一些无法以标准化方式完成的罕见情况,您仍然可以将脚本/ant 任务等挂接到 maven 中,甚至编写自定义插件。但我真的怀疑你是否需要这样做。
【讨论】:
这对于 stacoverflow.com 来说可能是一个更好的问题,但我会推荐 Ant。它非常健壮和灵活。
【讨论】:
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 中究竟想念什么?
【讨论】:
Ant 和 maven 是非常棒的构建工具。使用 maven,如果您想进行自定义构建,您可能必须编写自己的 maven 插件,这并不难。有大量在线文档可以创建您自己的插件。制作 maven 插件最酷的地方在于,它很容易在组织中或与开发人员团队共享;共享这些插件,您通常需要托管自己的 Maven 存储库。
Ant 非常灵活,因为它有一组非常广泛的标签,可以做任何事情,包括构建、运行测试、移动文件、从 repo 中签出代码,甚至在远程服务器上执行命令。在我看来,当您必须进行自定义构建时,使用 ant 会更容易一些。 ant 的问题在于,它更难做成一个可共享的模块,您可以像使用 maven 插件一样共享和配置。
Ivy 是另一种流行的构建工具,但是我没有使用它的经验。
【讨论】: