首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么选择巴克明斯特而不是梅文?

为什么选择巴克明斯特而不是梅文?
EN

Stack Overflow用户
提问于 2009-02-23 22:13:21
回答 7查看 6.8K关注 0票数 21

我已经使用Maven好几个月了,我对它在概念上和实践中的工作方式都很满意。

我还对巴克敏斯特进行了相当广泛的研究(但还没有开始运行示例),试图找出它是什么以及它是如何比较的。文件很差。例如,他们使用诸如构建、自动化和部署之类的术语,但我还没有看到任何关于部署的信息。分阶段迁移是另一个暗示但却未被讨论的话题。

Maven和Buckminster都使您能够指定依赖项,并且通常可以管理构建、测试和可能的部署过程。

它们都具有eclipse集成,并且都应该(仅使用Maven)对基于eclipse的项目及其依赖项的设置和共享进行细化。

我能看到的主要区别是:

  • 依赖关系:
代码语言:javascript
复制
- 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.

  • 构建
代码语言:javascript
复制
- 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.

  • 插件
代码语言:javascript
复制
- 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).

  • 部署
代码语言:javascript
复制
- 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?

  • 复杂性
代码语言:javascript
复制
- 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.

  • 文档
代码语言:javascript
复制
- 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用户)?

EN

回答 7

Stack Overflow用户

发布于 2010-04-28 15:41:10

一些澄清。

  • 依赖关系巴克敏斯特没有自己的存储库类型。它有一种发现机制,可以将现有的元数据(如Maven POM )转换为可以被巴克明斯特理解的模型。如果无法以任何其他方式派生,则可以逐字添加此元数据作为XML文件。
  • Buckminster决定如何构建与Eclipse一样的功能。此外,它还从已知的构件(如清单、build.properties、plugin.xml等)中提取信息,并将其转换为模型中可以使用巴克明斯特执行命令显式触发的操作。 我一点也不相信巴克明斯特会为无头建筑带来更多的包袱。事实上,我认为相反的情况更常见。在空机器上使用Maven构建时,通常从下载大量组件开始,即使手头的任务很琐碎。
  • 插件巴克敏斯特基于OSGi,并使用进行扩展。可以使用此机制添加新类型的存储库、新类型的操作、新的发现机制等。
  • 复杂度最低的巴克敏斯特配置只需要一个CQUERY和一个RMAP。有了它们,就可以构建一个任意大小的完整p2更新站点,并使用pack200进行签名和处理。不需要向任何特性和包中添加任何文件。什么都不需要“白纸黑字化”。因此,我不确定我是否同意Maven更易于配置。

除了Roland和Zoltán已经提到的好处之外,我还想补充一点,因为巴克敏斯特构建是一个真正的工作区构建,它将利用所有在.project文件中声明的构建程序。下面是一些示例:

  • PDE Manifest生成器-从清单、属性文件等中生成警告和错误。
  • PDE架构构建器(扩展点模式与此相同)
  • 所有其他构建器都是为Eclipse构建结构而创建的。这包括XML模式验证构建器、Java脚本构建器和许多其他构建器。

我相信Maven有他们大多数人的信件。巴克明斯特的要点是,你不需要维护额外的构建系统。在IDE工作区中工作的内容也是无头运行的。

票数 10
EN

Stack Overflow用户

发布于 2009-02-24 01:00:31

Maven使用基于布局的隐式构建系统。很容易创建一个默认项目,将它们放在预期的位置,并让maven构建、测试和创建jars。同时,含蓄也会使人感到压抑。你必须接受Maven做事的方式。

实际上,您可以显式地指定将内容放在Maven中的位置。默认的位置只是默认的,很容易重写,尽管很少有好的理由。

巴克敏斯特--我不清楚巴克敏斯特是如何决定建造什么和如何建造的。看起来这将与eclipse过程保持一致,以便进行同样的操作。巴克敏斯特还允许使用蚂蚁,但尚不清楚这是否是一项要求。至少,生命周期更短(不?)定义为好或坏,允许更多的灵活性。

我认为Maven倾向于遵循理性违约的哲学,这很容易被忽视。

Maven在配置上有点简单,尽管它可以在大型和多模块项目中变得复杂。Maven还提供了便于创建新项目的原型。

Maven的真正优势在于它对依赖关系的管理,这在具有多个子项目的复杂项目中尤为突出。很容易定义子项目的层次结构,并使其正常工作。

文档:它们都很糟糕。;-)

不能不同意!

票数 7
EN

Stack Overflow用户

发布于 2010-04-28 14:03:05

有一本PDF版本的巴克敏斯特图书,可从巴克敏斯特下载页面获得-超过250页的文件,包括介绍和详细的参考文件。

从这里下载:http://www.eclipse.org/downloads/download.php?file=/tools/buckminster/doc/BuckyBook.pdf

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/579603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档