Вставьте идентификатор набора изменений Mercurial working directory, например (838cb9c0367e), в файл свойств через Maven?

мы используем Maven для наших сборок и Mercurial для наших наборов изменений. Хотя у нашего программного обеспечения уже есть основная версия, мы действительно хотели бы знать, какой Mercurial changeset использовался для создания любого сервера, на котором работает наше программное обеспечение.

кто-нибудь знает способ в Maven захватить набор изменений рабочего каталога в Mercurial и получить его в файл свойств или что-то еще, чтобы мы могли отобразить его где-то в нашем приложении, когда администраторы sys делают " проверку здравомыслия" против какой версии работает?

4 ответов


объединить это с вашим pom.xml:

<project>
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>

    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>hgchangeset</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

затем сделать на src/main/resources со свойством установлен как ${changeSet}. Например:

revision = ${changeSet}
modificationTime = ${changeSetDate}

вы можете сделать крюк обновления, который выводит идентификатор набора изменений в неверсионный .файл свойств:

[hooks]
update = echo changesetid=$HG_PARENT1 > version.properties

преимущество этого подхода заключается в том, что вы можете легко настроить это значение, если это необходимо, и сборка остается независимой от системы управления версиями (или ее отсутствия).

Если вы хотите поместить что-то в сборку Maven, которая генерирует его вместо этого, вы посмотрели на Buildnumber Maven Плагин (hgchangeset цель) или Maven Mercurial Номер Сборки Плагин?


Если вы можете перехватить вывод команды (в переменную окружения, f.e)hg id -i будет простой способ. Более сложные идентификаторы могут быть построены с помощью hg log --template "..." tip


вы можете использовать плагин antrun Maven для запуска <exec> или <java> задача, которая генерирует файл свойств с этой информацией. Но это не очень элегантно.