是否有一个非常类似Java的cmake的工具?

迄今为止我所知道的最好的Java构建工具似乎是maven,

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

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

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

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

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

到目前为止,我所知道的最好的Java构建工具似乎是maven,但它仍然没有像cmake那样提供如此多的灵活性!

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

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

如果你有一个“灵活”的构建,那么这些好处就会丢失,但是,你是否真的会从这种“灵活”构建中获得任何收益? 很多人都在使用maven,而对于几乎所有问题,他们已经创建了一个解决方案。 如果您努力使用这些标准化解决方案,那么构建恕我直言的麻烦就会少得多。

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

Ant和maven是太棒的构建工具。 使用maven,如果你想进行自定义构建,你可能不得不编写自己的maven插件,这并不难。 在线有大量文档可以创建自己的插件。 制作maven插件的一个很酷的事情是,它很容易在组织中或与开发团队共享; 分享这些插件,你通常需要托管自己的maven repo。

Ant非常灵活,因为它具有非常广泛的标记集,可用于执行任何操作,包括构建,运行测试,移动文件,从存储库检出代码,甚至在远程服务器上执行命令。 在我看来,当你必须进行自定义构建时,ant更容易使用。 ant的问题在于,使用maven插件可以像使用maven插件一样共享和配置可共享模块。

常春藤是另一种流行的构建工具,但我没有经验。

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错过了什么?