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