当你使用git时,<scm>里面的Maven pom.xml - <tag>元素的用法是什么

mjl*_*lee 24 git maven-scm maven

我们将maven和git一起用于Java项目.在<scm>部分中,<tag>由发布插件自动添加.

例如,

  <scm>
          <connection>scm:git:http://myserver:7990/scm/project/test.git</connection>
          <tag>releaes-tag</tag>
  </scm>
Run Code Online (Sandbox Code Playgroud)

<tag>这里有什么代表?

我认为正常的惯例是 <tag>HEAD</tag>.

当我们使用颠覆时,maven从未使用过 <tag></tag>

是什么意思<tag></tag>

我搜索了谷歌和maven文档,但我找不到任何信息.

Joe*_*Joe 23

<tag>元素用于release:prepare指定为此版本创建的标记(实现为MRELEASE-723).在发布之外,它本质上是一个占位符,并且HEAD是一个合适的值.

当我们使用颠覆时,maven从未使用过 <tag></tag>

作为MRELEASE-723解释:

当我调用release时:使用以下URL准备: 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吗? (4认同)
  • [技术Maven项目描述符](https://maven.apache.org/ref/3.5.0/maven-model/maven.html#class_scm)的参考(即POM文件的技术规范)指出: &lt;tag&gt;元素的默认值确实是HEAD,所以这就是您未指定标签时所假定的(就像`jar`是&lt;packaging&gt;元素的默认值一样)。 (2认同)