我已经使用Maven好几个月了,我对它在概念上和实践中的工作方式都很满意。
我还对巴克敏斯特进行了相当广泛的研究(但还没有开始运行示例),试图找出它是什么以及它是如何比较的。文件很差。例如,他们使用诸如构建、自动化和部署之类的术语,但我还没有看到任何关于部署的信息。分阶段迁移是另一个暗示但却未被讨论的话题。
Maven和Buckminster都使您能够指定依赖项,并且通常可以管理构建、测试和可能的部署过程。
它们都具有eclipse集成,并且都应该(仅使用Maven)对基于eclipse的项目及其依赖项的设置和共享进行细化。
我能看到的主要区别是:
- Buckminster can specify dependencies living in source repositories and it's own type of repository in addition to being able to reference Maven repositories for dependencies.
- Buckminster can group dependencies into virtual distros and is also platform aware. The grouping of software certainly seems possible in Maven with poms that reference other dependecies and group them.
- Maven uses an implicit build system based on layout. It is very easy to create a default project, put things where they are expected to be and have maven build, test and create jars. At the same time, being implicit can also be constricting. You have to live with how Maven does things.
- Buckminster - It is not clear to me how Buckminster decides what to build and how to build it. It would seem that this would align with the eclipse process for doing the same. Buckminster also allows the use of ant, but it is not clear if this is a requirement. At the very least, the lifecycle is less (un?) defined for good or bad, allowing more flexibility.
- Both tools allow for headless builds, although buckminster may carry a bit more baggage along with it.
- Maven has a very extensive set of plugins for all phases of the lifecycle for many different kinds of automation, from code generation to running embedded services for testing.
- Buckminster does not appear to have the same concept of plugins. There are readers and actors, but they do not seem to play the same role. Buckminster should have access to the extensive set of plugins available for ant. It is not clear how well ant actions can be seamlessly integrated with the rest of Buckminster processes (this is also an issue for the maven ant plugin).
- Maven has a number of plugins for generating distributions of software (assemblies) and moving them around (wagons). Does Buckminster get all of this from Ant?
- The different schemas for Buckminster can be quite complex, between CPECs RMAPs MSPECs, etc.
- Maven is somewhat simpler configuration-wise, although it can get complex with large and multi-module projects. Maven also has Archetypes for easy creation of new projects.
- They are both bad. ;-)
- Buckminster is very shallow, documentation-wise. Not enough examples are available.
- Maven plugins tend to have very poor documentation, making it difficult to get them running correctly.
从我的角度来看,我想用巴克敏斯特做的大部分事情我都可以用Maven做。版本控制中的“物化”是一个好处,但是组织中的开发人员除了提供固定版本之外,还可以将maven快照发布到存储库中,以便彼此共享。
似乎有更多的灵活性和不受Maven生命周期限制的限制(曾经想要添加另一个阶段,比如清理的后测试?)等着他们在核心做吧)。
我遗漏了什么?巴克明斯特中是否有一些重要的功能值得在复杂性方面有所提升?
上面是否有任意的innacurate语句(考虑到我不是巴克敏斯特用户,只是一个低级的Maven用户)?
发布于 2010-04-28 15:41:10
一些澄清。
除了Roland和Zoltán已经提到的好处之外,我还想补充一点,因为巴克敏斯特构建是一个真正的工作区构建,它将利用所有在.project文件中声明的构建程序。下面是一些示例:
我相信Maven有他们大多数人的信件。巴克明斯特的要点是,你不需要维护额外的构建系统。在IDE工作区中工作的内容也是无头运行的。
发布于 2009-02-24 01:00:31
Maven使用基于布局的隐式构建系统。很容易创建一个默认项目,将它们放在预期的位置,并让maven构建、测试和创建jars。同时,含蓄也会使人感到压抑。你必须接受Maven做事的方式。
实际上,您可以显式地指定将内容放在Maven中的位置。默认的位置只是默认的,很容易重写,尽管很少有好的理由。
巴克敏斯特--我不清楚巴克敏斯特是如何决定建造什么和如何建造的。看起来这将与eclipse过程保持一致,以便进行同样的操作。巴克敏斯特还允许使用蚂蚁,但尚不清楚这是否是一项要求。至少,生命周期更短(不?)定义为好或坏,允许更多的灵活性。
我认为Maven倾向于遵循理性违约的哲学,这很容易被忽视。
Maven在配置上有点简单,尽管它可以在大型和多模块项目中变得复杂。Maven还提供了便于创建新项目的原型。
Maven的真正优势在于它对依赖关系的管理,这在具有多个子项目的复杂项目中尤为突出。很容易定义子项目的层次结构,并使其正常工作。
文档:它们都很糟糕。;-)
不能不同意!
发布于 2010-04-28 14:03:05
有一本PDF版本的巴克敏斯特图书,可从巴克敏斯特下载页面获得-超过250页的文件,包括介绍和详细的参考文件。
从这里下载:http://www.eclipse.org/downloads/download.php?file=/tools/buckminster/doc/BuckyBook.pdf
https://stackoverflow.com/questions/579603
复制相似问题