Java 为什么选择巴克明斯特而不是马文?

Java 为什么选择巴克明斯特而不是马文?,java,maven-2,build-automation,buckminster,Java,Maven 2,Build Automation,Buckminster,我已经用了好几个月了,我对它的工作原理很满意 在概念上和实践中 我还广泛地研究了(但还没有开始运行示例),试图找出它是什么 以及如何比较。文件很差。例如,他们使用诸如构建自动化和部署之类的术语,但我还没有看到关于部署的任何内容。分阶段迁移是另一个暗示但未讨论的话题 Maven和Buckminster都让您能够指定依赖项,并通常管理构建、测试和可能的部署过程 它们都有eclipse集成,并且都应该(仅使用Maven)简化基于eclipse的项目及其依赖项的设置和共享 我看到的主要区别是: 依赖项

我已经用了好几个月了,我对它的工作原理很满意 在概念上和实践中

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

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

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

我看到的主要区别是:

  • 依赖项:

    • Buckminster可以指定源存储库中的依赖项以及它自己的存储库类型,此外还可以引用Maven存储库以获取依赖项
    • Buckminster可以将依赖项分组到虚拟发行版中,并且具有平台意识。在Maven中,软件的分组显然是可能的,POM引用其他依赖项并对它们进行分组
  • 建造

    • Maven使用基于布局的隐式构建系统。创建一个默认项目、将东西放在期望的位置、让maven构建、测试和创建JAR非常容易。同时,含蓄也会使人感到压抑。你必须接受Maven做事的方式
    • 巴克明斯特-我不清楚巴克明斯特如何决定建造什么以及如何建造它。似乎这将与eclipse过程保持一致,以实现同样的目的。巴克明斯特也允许使用ant,但不清楚这是否是一项要求。至少,生命周期的好坏定义较少(未定义),允许更大的灵活性
    • 这两种工具都允许无头构建,尽管巴克明斯特可能会带来更多的负担
  • 插件

    • Maven在生命周期的所有阶段都有一套非常广泛的插件,用于许多不同类型的自动化,从代码生成到运行用于测试的嵌入式服务
    • 巴克明斯特似乎没有相同的插件概念。有读者和演员,但他们似乎并没有扮演同样的角色。Buckminster应该可以访问ant可用的大量插件。尚不清楚ant操作与Buckminster流程的其余部分的无缝集成程度(这也是maven ant插件的一个问题)
  • 部署

    • Maven有许多插件,用于生成软件(程序集)的发行版和移动它们(货车)。巴克明斯特是从蚂蚁那里得到这些的吗
  • 复杂性

    • 巴克明斯特的不同模式在CPEC、RMAP、MSPEC等之间可能相当复杂
    • Maven在配置方面稍显简单,但在大型和多模块项目中可能会变得复杂。Maven还具有易于创建新项目的原型
  • 文件

    • 他们都很坏
    • 巴克明斯特非常肤浅,文档方面也很明智。没有足够的例子
    • Maven插件的文档往往很差,因此很难让它们正确运行
从我的角度来看,我想对巴克明斯特做的大部分事情都可以对马文做。来自版本控制的“物化”是一个优势,但组织内的开发人员可以将maven快照发布到存储库,以便彼此共享,此外还可以提供固定版本

在Maven生命周期的限制下,似乎有了更多的灵活性和自由度(曾经想要添加另一个阶段,比如清理后测试?必须等待他们在核心中完成)

我错过了什么?巴克明斯特是否有一些重要的功能值得复杂性的提升

上面是否有任何不准确的陈述(考虑到我不是巴克明斯特用户,只是一个中低级别的Maven用户)

Maven使用隐式构建系统 基于布局。这是很容易做到的 创建一个默认项目,放置 他们预期会在哪里,并且有 maven构建、测试和创建JAR。在 同时,含蓄也可以 我感到很压抑。你必须和我一起生活 Maven是如何做事的

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

巴克明斯特-我不清楚 巴克明斯特如何决定建造什么 以及如何建造它。看起来 这将与日食保持一致 执行相同操作的过程。 巴克明斯特也允许使用 蚂蚁,但不清楚这是否是一个 要求至少,这个 生命周期的定义较少(未?) 好或坏,允许更多 灵活性

我认为Maven倾向于遵循理性违约的哲学,这些违约很容易被推翻

Maven有点简单 配置方面,尽管它可以 与大而复杂的 多模块项目。马文也有 用于轻松创建新文档的原型 项目

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

文档:它们都不好。;-)

我不能不同意

简而言之,我对巴克明斯特的理解(非常有限)是,它是一个用于在团队成员之间对一组项目进行版本控制和共享Eclipse项目配置的系统。它看起来确实很有趣
import '${WORKSPACE}source/scodi-rcp/features/ch.scodi.client.site/site.cquery'

build

perform -D target.os=* -D target.ws=* -D target.arch=* -D
qualifier.replacement.*=${version} ch.scodi.client.site#site.p2.zip
perform -D target.os=win32 -D target.ws=win32 -D target.arch=x86
ch.scodi.client.site#create.product.zip perform -D target.os=win32 -D
target.ws=win32 -D target.arch=x86_64
ch.scodi.client.site#create.product.zip