Frage

ich kann nicht herausfinden, wie man eine Mercurial Revision ID put in meine Maven Build zu erhalten (im Idealfall möchte ich es in den manifesten meiner Krüge und Krieg).

Die nächste Lösung, die ich finden konnte, ist:

mvn -DbuildNumber=`hg id -i`

, die nicht wirklich Arbeit für Windows oder meinen Hudson-Server. Zum Glück Hudson Tags meine baut aber ich würde etwas mehr Sicherheit möchte, wenn die Builds auch mit dem Mercurial changset ID getaggt wurden.

War es hilfreich?

Lösung

Hier finden Sie aktuelle diese vorherige Frage und die Link von der akzeptierten Antwort. Im Grunde wollen Sie die gleiche Sache zu tun, außer dass Sie die

Andere Tipps

Leider ist hg id -i zu lang für den Einsatz. Ich habe ein Skript, das eine genaue Build-Nummer wird berechnen. Allerdings gibt es zwei Ausnahmen. Wenn es nicht frühere Release auf dem Zweig war, dann kann es keine Gültigkeit. Wenn es Änderungen in dem lokalen Repo sind, dann kann es keine Gültigkeit. In meinem Build-Skript markiere ich den Build als „x.x.UNSTABLE“, wenn das passiert.

Ich verwende eine REL_PATTERN den letzten Tag im aktuellen Zweig zu holen, die als tatsächliche Freigabe markiert wurden. Dann berechne ich die Build-Nummer durch die Verfolgung der Protokollzählung von diesem Release + alle Commits zum Zweig seit dieser Veröffentlichung begehen.

#!/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
scroll top