当您使用 git 时,Maven pom.xml - <scm> 内的 <tag> 元素的用法是啥
Posted
技术标签:
【中文标题】当您使用 git 时,Maven pom.xml - <scm> 内的 <tag> 元素的用法是啥【英文标题】:What is the usage of Maven pom.xml - <tag> element inside of <scm> when you are using git当您使用 git 时,Maven pom.xml - <scm> 内的 <tag> 元素的用法是什么 【发布时间】:2014-07-06 06:47:53 【问题描述】:我们将 maven 和 git 一起用于 Java 项目。在<scm>
部分,<tag>
由发布插件自动添加。
例如,
<scm>
<connection>scm:git:http://myserver:7990/scm/project/test.git</connection>
<tag>releaes-tag</tag>
</scm>
<tag>
在这里代表什么?
我相信正常的约定是<tag>HEAD</tag>.
我们在使用subversion的时候,maven从来没有用过<tag></tag>
<tag></tag>
是什么意思?
我搜索了 google 和 maven 文档,但找不到任何相关信息。
【问题讨论】:
【参考方案1】:release:prepare
使用<tag>
元素来指定为此版本创建的标签(实现为MRELEASE-723)。在发布之外,它本质上是一个占位符,HEAD
是一个合适的值。
我们在使用subversion的时候,maven从来没有用过
<tag></tag>
正如MRELEASE-723
解释的那样:
当我调用 release:prepare 时 像这样的网址:
https://example.test/svn/REPO/myproject/branches/release
会的 替换为https://example.test/svn/REPO/myproject/tags/myproject-1.0
这很好,因为现在您知道要签出哪个版本 构建版本。
发布版本的<scm>
元素应该包含足够的信息来检查为此版本创建的标签。
Subversion 允许将标签包含在连接 URL 中。 Git 和 Mercurial 都不允许这样做,因此使用 <tag>
元素代替。
【讨论】:
但是在分支上(工件的快照版本)我可以简单地删除<tag>HEAD</tag>
对吗?并让它在发布标签的 Maven 版本上自动设置。还是它总是在发布后将其添加回 HEAD?
也许我只是粗心,但我仍然不明白需要在<scm>
部分自动添加<tag>
。当我看到它时,我倾向于将其删除,但它会不断弹出。
因此,<tag>
的值在运行release:prepare
目标时是唯一选择的(提示用户输入)。之后的目标是将这样的值粘贴到<scm>/<tag>
下的pom.xml
中,只是为了存储这些信息?
technical maven project descriptor 的引用(即 POM 文件的技术规范)指出 <tag>
元素的默认值确实是 HEAD
,所以当你不这样做时,这是假定的'不指定标签(就像jar
是<packaging>
元素的默认值一样)。以上是关于当您使用 git 时,Maven pom.xml - <scm> 内的 <tag> 元素的用法是啥的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上使用 git 发布多模块 maven 项目
Maven 3.0 的“mvn release:perform”不喜欢不在其 git repo 根目录中的 pom.xml