我不知道如何将Mercurial修订ID放入我的Maven构建中(理想情况下,我希望在我的罐子和战争的清单中)。

我能找到的最接近的解决方案是:

mvn -DbuildNumber=`hg id -i`

这实际上对Windows或我的Hudson服务器不起作用。幸运的是,哈德森(Hudson)标记了我的构建,但如果构建也标有Mercurial Changset ID,我希望更多保证。

有帮助吗?

解决方案

看一下 以前的问题 以及所接受的答案的链接。基本上,您想做同样的事情,除非您要使用 buildnumber:hgchangeset 以梅里尔的目标获得目标 changeset 具有内容的财产 hg id -i.

其他提示

很遗憾, hg id -i 太长了。我创建了一个将计算准确的构建编号的脚本。但是,有两个例外。如果分支机构上没有以前的版本,则不能有效。如果本地存储库有更改,则它是无效的。在我的构建脚本中,每当发生这种情况时,我将构建标记为“ xxunstable”。

我使用rel_pattern在当前分支中拾取被标记为实际版本的最后一个标签。然后,我通过跟踪从该版本的发行版 +所有提交分支的提交日志计数来计算构建号,因为该版本是该版本的。

#!/bin/bash
REL_PATTERN="release-[0-9]*\.[0-9]*\.[0-9]*"
BRANCH=$( hg branch )
CURR_REV=$( hg id -n )
if [  "${CURR_REV: -1}" = "+" ] ; then
  echo "ERROR: This workspace contains uncommitted code. Cannot calculate build number" >&2
  echo "UNSTABLE"
  exit 1
fi
RELEASE=$( hg log --rev="branch($BRANCH) and tag() and 1:$CURR_REV" -T "{tags} {rev}\n"|grep "${REL_PATTERN} "|tail -1 )
if [ "$RELEASE" = "" ] ; then
  echo "ERROR: Unable to locate version tag" >&2
  echo "UNSTABLE"
  exit 1
fi
RELEASE_REV=$( echo $RELEASE|cut -f 2 -d ' ' )
RELEASE_TAG=$( echo $RELEASE|cut -f 1 -d ' ' )
REVS=$( hg log -P $RELEASE_REV -b $BRANCH -T "{rev}\n"|wc -l )
BUILD=$( hg log -r1:$CURR_REV -P $RELEASE_REV -b $BRANCH -T "{rev}\n"|wc -l )
echo "BRANCH=$BRANCH" >&2
echo "CURR_REV=$CURR_REV" >&2
echo "RELEASE_REV=$RELEASE_REV" >&2
echo "RELEASE_TAG=$RELEASE_TAG" >&2
echo "BUILD=$BUILD" >&2
echo $BUILD
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top