当前位置:  开发笔记 > 编程语言 > 正文

为什么选择Buckminster而不是Maven?

如何解决《为什么选择Buckminster而不是Maven?》经验,为你挑选了4个好方法。

我已经使用Maven几个月了,我对它在概念上和实践中如何运作非常满意.

我也非常广泛地研究了Buckminster(但尚未开始运行样品),试图弄清楚它是什么以及它是如何比较的.文档很差.例如,他们使用Build Automate和Deploy等术语,但我还没有看到有关部署的任何信息.分阶段迁移是另一个暗示但尚未讨论的主题.

Maven和Buckminster都可以指定依赖关系,并且通常可以管理构建,测试和可能的部署过程.

它们都具有eclipse集成,并且两者都应该(仅使用Maven)使基于eclipse的项目及其依赖项的设置和共享变得微不足道.

我能看到的主要区别是:

依赖关系:

除了能够引用Maven存储库以获取依赖关系之外,Buckminster还可以指定存储在源存储库中的依赖关系以及它自己的存储库类型.

Buckminster可以将依赖关系分组到虚拟发行版中,并且还可以识别平台.在Maven中,软件分组似乎是可能的,其中poms引用其他依赖并将它们分组.

建立

Maven使用基于布局的隐式构建系统.创建一个默认项目非常容易,把它放在预期的位置,并有maven构建,测试和创建jar.同时,隐含也可以是收缩.你必须忍受Maven如何做事.

Buckminster - 我不清楚Buckminster如何决定构建什么以及如何构建它.似乎这会与日食过程一致.巴克敏斯特也允许使用蚂蚁,但目前尚不清楚这是否是一项要求.至少,生命周期较少(不?)定义为好或坏,允许更多的灵活性.

这两种工具都允许无头构建,尽管巴克敏斯特可能携带更多的行李.

插件

Maven为生命周期的所有阶段提供了非常广泛的插件集,适用于许多不同类型的自动化,从代码生成到运行嵌入式服务进行测试.

Buckminster似乎没有相同的插件概念.有读者和演员,但他们似乎没有扮演同样的角色.Buckminster应该可以访问可用于ant的大量插件.目前尚不清楚ant动作能够与其他Buckminster进程无缝集成(这也是maven ant插件的一个问题).

部署

Maven有许多插件用于生成软件(程序集)的分发并移动它们(货车).Buckminster是否从Ant获得了所有这些?

复杂

Buckminster的不同模式在CPECs RMAPs MSPEC等之间可能相当复杂.

虽然Maven在大型和多模块项目中变得复杂,但它在配置方面稍微简单一些.Maven还有Archetypes,可以轻松创建新项目.

文档

他们都很糟糕.;-)

Buckminster非常浅,文档化.没有足够的例子可供使用.

Maven插件往往文档很差,很难让它们正常运行.

从我的角度来看,我想用Buckminster做的大部分事情都可以和Maven一起使用.从版本控制"实现"是一个优点,但组织中的开发人员可以将maven快照发布到存储库以便彼此共享,此外还提供固定版本.

似乎有更多的灵活性和自由来避免Maven生命周期的限制(曾经想要添加另一个阶段,比如后期测试清理?必须等待它们在核心中进行).

我错过了什么?Buckminster中是否有一些重要的功能值得提升复杂性?

上面是否有任何疯狂的真实陈述(鉴于我不是Buckminster用户而只有中低级别的Maven用户)?



1> 小智..:

一些澄清.

依赖

Buckminster没有自己的存储库类型.它有一个发现机制,可以将现有的元数据(如Maven POM)转换为Buckminster可以理解的模型.如果无法以任何其他方式派生,则可以将此元数据逐字添加为XML文件.

建立

Buckminster以与Eclipse IDE相同的方式决定构建内容.除此之外,它还从已知工件中提取信息,例如manifest,build.properties,plugin.xml等,并将其转换为模型中可以使用Buckminster perform命令显式触发的操作.

我完全不相信巴克明斯特为无头建筑带来了更多的包袱.事实上,我认为相反的情况更为常见.在空机器上使用Maven构建通常从下载大量组件开始,即使手头的任务很简单.

插件

Buckminster基于OSGi并使用Eclipse扩展点进行扩展.可以使用此机制添加新类型的存储库,新类型的操作,新的发现机制等.

复杂

最低Buckminster配置只需要一个CQUERY和一个RMAP.有了它们,就可以构建一个任意大小的完整p2更新站点,该站点使用pack200进行签名和处理.不需要将任何文件添加到任何功能和包中.没有什么需要"Buckminsterized".所以我不确定我是否同意Maven配置更简单.

除了Roland和Zoltán已经提到的好处之外,我想补充一点,因为buckminster构建是一个真正的工作区构建,它将利用在.project文件中声明的所有构建器.这里有些例子:

PDE清单构建器 - 从清单,属性文件等生成警告和错误.

PDE模式构建器(扩展点模式的相同内容)

为Eclipse Build结构制作的所有其他构建器.这包括XML模式验证构建器,Java Script构建器以及许多其他构建器.

我确信Maven对大多数人都有通信.Buckminster的观点是您不需要维护额外的构建系统.在IDE工作区中有效的方法也可以无头工作.



2> Ben Hardy..:

Maven使用基于布局的隐式构建系统.创建一个默认项目非常容易,把它放在预期的位置,并有maven构建,测试和创建jar.同时,隐含也可以是收缩.你必须忍受Maven如何做事.

实际上,您可以明确指定在Maven中放置内容的位置.默认位置只是默认位置,易于覆盖,尽管很少有理由.

Buckminster - 我不清楚Buckminster如何决定构建什么以及如何构建它.似乎这会与日食过程一致.巴克敏斯特也允许使用蚂蚁,但目前尚不清楚这是否是一项要求.至少,生命周期较少(不?)定义为好或坏,允许更多的灵活性.

我认为Maven倾向于遵循容易过度的合理默认理念.

虽然Maven在大型和多模块项目中变得复杂,但它在配置方面稍微简单一些.Maven还有Archetypes,可以轻松创建新项目.

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

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

不能不同意!



3> 小智..:

Buckminster下载页面提供了一个PDF格式的Buckminster书籍 - 超过250页的文档,包括介绍和详细的参考文档.

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



4> Zoltán Ujhel..:

使用Buckminster的最大优点是编译OSGi包或Eclipse插件时,因为它可以重用PDE构建基础结构,该基础结构处理manifest.mf/plugin.xml文件中已存在的各种版本信息.使用Maven时,必须复制此信息(AFAIK).如果您不开发Eclipse插件,并且已经熟悉Maven,那么Buckminster将没有真正的优势,特别是考虑到陡峭的学习曲线.另一方面,为了构建Eclipse插件,它提供了更好的开箱即用支持.

您可以通过编写新的读取器(从其他位置获取源)或新的actor(提供构建步骤 - 这些actor可以重用Maven或Ant,从而提供额外的功能)来扩展Buckminster.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有