java - 为什么选择巴克敏斯特而非Maven?

标签 java maven-2 build-automation buckminster

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

我还对Buckminster进行了广泛的研究(但还没有运行示例)来尝试找出它是什么。
以及如何比较。该文档很差。例如,他们使用诸如“构建自动化”和“部署”之类的术语,但我尚未看到有关部署的任何信息。分阶段迁移是另一个未曾暗示但尚未讨论的话题。

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

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

我可以看到的主要区别是:

  • 依赖关系:
  • Buckminster可以指定源代码库中存在的依赖关系,以及它自己的资源库类型,此外还可以引用Maven资源库以获取依赖关系。
  • Buckminster可以将依赖项分组为虚拟发行版,并且还可以识别平台。在Maven中,使用pom引用其他依赖项并将其分组当然可以对软件进行分组。
  • 构建
  • Maven使用基于布局的隐式构建系统。创建默认项目,将内容放置在预期位置并进行Maven构建,测试和创建jar十分容易。同时,隐式也可能会造成限制。您必须忍受Maven的工作方式。
  • Buckminster-我尚不清楚Buckminster如何决定要构建什么以及如何构建它。看起来这与 eclipse 过程相同。 Buckminster还允许使用ant,但尚不清楚是否需要此功能。至少,为好或坏定义的生命周期更少(un?),从而具有更大的灵活性。
  • 尽管buckminster可能随身携带更多行李,但两种工具都允许无头构建。
  • 插件
  • Maven为生命周期的所有阶段提供了非常广泛的插件集,用于许多不同种类的自动化,从代码生成到运行嵌入式服务以进行测试。
  • Buckminster似乎没有相同的插件概念。有读者和 Actor ,但他们似乎没有扮演相同的角色。 Buckminster应该可以使用广泛的可用于ant的插件集。尚不清楚如何将 Ant Action 与其余的Buckminster流程无缝集成在一起(这也是maven ant插件的问题)。
  • 部署
  • Maven有许多插件,用于生成软件(程序集)分发并将它们移动(货车)。 Buckminster可以从Ant那里得到所有这些吗?
  • 复杂度
  • 在CPEC,RMAP,MSPEC等之间,Buckminster的不同架构可能非常复杂。
  • Maven在配置方面较为简单,尽管在大型和多模块项目中可能会变得复杂。 Maven还具有原型(prototype),可轻松创建新项目。
  • 文档
  • 他们俩都不好。 ;-)
  • Buckminster在文档方面非常浅。没有足够的示例。
  • Maven插件的文档往往很差,很难使其正确运行。

  • 从我的角度来看,我想与Buckminster一起做的大部分事情都可以与Maven一起做。来自版本控制的“ Material 化”是一个加号,但是组织内的开发人员除了提供固定版本外,还可以将maven快照发布到存储库以彼此共享。

    Maven生命周期的束缚似乎确实具有更大的灵活性和自由度(曾经想添加另一个阶段,如清理后测试?必须等待他们在核心中进行)。

    我想念什么? Buckminster中是否有一些重要的功能值得复杂化?

    上面是否有任何荒谬的陈述(假设我不是Buckminster用户,而只是中低级Maven用户)?

    最佳答案

    一些澄清。

  • 依赖关系
    Buckminster没有自己的存储库类型。它具有发现机制,可以将现有的元数据(例如Maven POM)转换为Buckminster可以理解的模型。如果无法以任何其他方式派生该元数据,则可以将其作为XML文件逐字添加。
  • 构建
    Buckminster决定以与Eclipse IDE相同的方式构建内容。除此之外,它还从 list ,build.properties,plugin.xml等已知工件中提取信息,并将其转换为模型中可以使用Buckminster perform命令显式触发的 Action 。
    我完全不相信Buckminster会为无头建筑携带更多行李。实际上,我认为相反的情况更为普遍。即使手头的任务很琐碎,在空机器上使用Maven进行构建通常也要从大量组件的下载开始。
  • 插件
    Buckminster基于OSGi,并使用Eclipse扩展点进行了扩展。可以使用这种机制添加新的存储库类型,新的操作类型,新的发现机制等。
  • 复杂度
    最低的Buckminster配置仅需要一个CQUERY和一个RMAP。有了它们,就有可能构建一个完整大小的完整p2更新站点,并用pack200对其进行签名和处理。无需将文件添加到任何功能和 bundle 包。不需要“降级”。所以我不确定我是否同意Maven更易于配置。

  • 除了Roland和Zoltán已经提到的好处外,我还要补充一点,因为buckminster构建是一个真正的工作区构建,所以它将利用.project文件中声明的所有构建器。以下是一些示例:
  • PDE list 构建器-从 list ,属性文件等生成警告和错误。
  • PDE架构构建器(与扩展点架构相同)
  • 用于Eclipse Build结构的所有其他构建器。其中包括XML模式验证构建器,Java Script构建器以及许多其他构建器。
  • 我敢肯定Maven对大多数人都有对应关系。 Buckminster的要点是您不需要维护额外的构建系统。在IDE工作区中可以正常工作的东西,也可以轻松地工作。

    关于java - 为什么选择巴克敏斯特而非Maven?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/579603/

    相关文章:

    java - 从 Arraylist<Long> 中检索 long 类型的索引

    java - Hibernate @ManyToMany 不使用 joinTable 并生成笛卡尔而不是内连接

    使用 GSON 的 Java 对象到 JSON

    java - 我怎样才能找到一个 servlet 的 URL?

    maven-2 - 从 Maven 2/3 迁移到 Gradle

    java - 可以编译 Maven 文件夹结构之外的文件吗?

    maven-2 - 多模块项目中的 Maven 故障保护插件

    tfs - 在TFS 2008上运行自动化测试

    python - 从 SConscript 确定构建目录

    build-automation - PhotoShop 图像的命令行操作