我已经使用Maven几个月了,我对它在概念上和实践中的工作方式非常满意。
我还非常广泛地研究了Buckminster(但还没有运行样本),试图弄清楚它是什么以及它是如何比较的。文档很差。例如,他们使用 Build Automate 和 Deploy 之类的术语,但我还没有看到任何关于部署的内容。分阶段迁移是另一个暗示但未讨论的话题。
Maven 和 Buckminster 都使您能够指定依赖关系并通常管理构建、测试和可能的部署过程。
它们都具有 Eclipse 集成,并且都应该(仅使用 Maven)简化基于 Eclipse 的项目及其依赖项的设置和共享。
我可以看到的主要区别是:
依赖项:
- Buckminster 可以指定存在于源存储库中的依赖项和它自己的存储库类型,此外还能够引用 Maven 存储库以获取依赖项。
- Buckminster 可以将依赖项分组到虚拟发行版中,并且还具有平台意识。在 Maven 中,使用引用其他依赖项并将它们分组的 pom 对软件进行分组当然是可能的。
建造
- Maven 使用基于布局的隐式构建系统。很容易创建一个默认项目,把东西放在他们期望的地方,并让 maven 构建、测试和创建 jars。同时,含蓄也可能是一种束缚。你必须接受 Maven 做事的方式。
- Buckminster - 我不清楚 Buckminster 如何决定构建什么以及如何构建它。看起来这将与 eclipse 过程保持一致。Buckminster 也允许使用 ant,但不清楚这是否是必需的。至少,生命周期的好坏定义较少(un?),允许更大的灵活性。
- 这两种工具都允许无头构建,尽管 buckminster 可能会带来更多的包袱。
插件
- Maven 为生命周期的所有阶段提供了一套非常广泛的插件,用于许多不同类型的自动化,从代码生成到运行嵌入式服务进行测试。
- Buckminster 似乎没有相同的插件概念。有读者和演员,但他们似乎扮演的角色并不相同。Buckminster 应该可以访问大量可用于 ant 的插件集。目前尚不清楚 ant 操作如何与 Buckminster 的其余进程无缝集成(这也是 maven ant 插件的一个问题)。
部署
- Maven 有许多插件用于生成软件分发(程序集)和移动它们(货车)。Buckminster 是否从 Ant 获得所有这些?
复杂
- Buckminster 的不同模式可能非常复杂,在 CPEC、RMAP、MSPEC 等之间。
- Maven 在配置方面稍微简单一些,尽管它可能会因大型和多模块项目而变得复杂。Maven 还具有用于轻松创建新项目的原型。
文档
- 他们都是坏人。;-)
- Buckminster 在文档方面非常肤浅。没有足够的例子可用。
- Maven 插件的文档往往很差,因此很难让它们正确运行。
从我的角度来看,我想用 Buckminster 做的大部分事情都可以用 Maven 做。来自版本控制的“物化”是一个加分项,但组织内的开发人员可以将 maven 快照发布到存储库以相互共享,而不仅仅是提供固定版本。
似乎从 Maven 生命周期的限制中获得了更多的灵活性和自由度(曾经想添加另一个阶段,例如用于清理的后测试?必须等待他们在核心中完成它)。
我错过了什么?Buckminster 中是否有一些重要的功能值得增加复杂性?
上面是否有任何非常不准确的陈述(假设我不是 Buckminster 用户,只是一个中低级 Maven 用户)?