【发布时间】:2014-04-18 17:54:54
【问题描述】:
假设以下树:
foo
├──trunk
├──branches
│ ├──1.0-rc1
│ ├──2.0
│ └──2.0-crazy-feature
└──tags
├──1.0-rc1
└──1.0-final
每个目录中的工件应该有什么 Maven/Ivy 版本号? -- 实际上,我可以猜到分支和标签,但trunk 让我很难过。
foo
├──trunk ⇐ ????
├──branches
│ ├──1.0 ⇐ 1.0-SNAPSHOT
│ ├──2.0 ⇐ 2.0-SNAPSHOT
│ └──2.0-crazy-feature ⇐ 2.0-crazy-feature
└──tags
├──1.0-rc1 ⇐ 1.0-rc1
└──1.0-final ⇐ 1.0
Maven 约定与这里的 Subversion 约定并不完全匹配,特别是如果您试图严格(参见 Vincent Driessen 的git branching model),不要只通过合并将代码直接检查到主干中。
野外抽查表明大多数人没有那么严格,主干(或 git master)刚开始是 1.0-SNAPSHOT,后来变成 2.0-SNAPSHOT,等等。但假设你的发布计划很复杂足以使您需要将主干与版本发布分支区分开来,并且您不希望构建系统混淆trunk 或branches/2.0 是否是“真正的” 2.0-SNAPSHOT,应该使用什么版本号@ 987654327@生产?
注意我们暂时在这里使用 SVN,但我不希望我们现在做出决定,一旦我们首先让每个人都对适当的分支和适当的版本化工件。此外,上面的树只是一个项目,但我们实际上拥有的是(字面意思)大约 500 个单独的模块,目前在一个单一的单体存储库中。
【问题讨论】:
标签: maven versioning ivy branching-and-merging