为了让开发人员更容易上手,我已经实现了一个Maven Archetype,它可以为我们的环境量身定制一个项目。 Archetype工作得很好,但无法完成一个关键点的设置:生成的项目缺少Mercurial存储库。
有没有办法可以从原型运行hg init
?
此请求的核心原因是我希望减少开发人员在创建和配置新产品时必须经历的步骤数。可能需要创建多达五个或更多模块,每个模块都需要自己办理登机手续。这些模块不能分组到EAR包中,因为它们可以在架构中独立部署。
答案是“不,没有解决方案”是可以接受的。这是关于通过自动化优化零到操作时间。如果无法使用Maven的机制自动化,那么我宁愿不实施解决方案而不是找到一个不合标准的解决方案。
我考虑过的一个解决方案是使用ANT插件从命令行调用hg
。我不喜欢这个解决方案的部分是它依赖于在路径中具有Mercurial可执行文件的用户。这是一种可能造成失败的依赖关系。这样的故障点会使初始设置复杂化,而不是按预期简化。 (Ergo,为什么“没有解决方案”是可行的答案。)
感谢大家到目前为止的建议!
答案 0 :(得分:1)
为什么不编写自己的Maven插件来执行hg init
以及您需要的其他任何内容?编写像这样的基本Maven插件并不难。
我个人get the source for the scm plugin并在插件中添加init
目标。这将是最干净的方式。
在我看来,scm插件中没有init
目标看起来像是一个明显的遗漏。如果你提交更改,它甚至可能会重新进入主代码。
答案 1 :(得分:0)
不,我知道。在手动创建hg init之后运行是一件大事吗?或者将脚本放入将手动调用的原型中。这样做不会改变,但你可以在其中定义默认行为。
答案 2 :(得分:0)
为什么您希望每个开发人员使用hg init
创建一个mercurial存储库?您需要的是每个开发人员能够通过克隆中央hg
存储库来开始。这可以使用scm:bootstrap
或scm:checkout
等maven scm plugin目标来完成。