Вставить идентификатор набора изменений рабочего каталога Mercurial, например (838cb9c0367e), в файл свойств через Maven? - PullRequest
6 голосов
/ 26 октября 2011

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

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

Ответы [ 4 ]

6 голосов
/ 28 октября 2011

Объедините это с вашим 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>

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

revision = ${changeSet}
modificationTime = ${changeSetDate}
6 голосов
/ 26 октября 2011

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

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

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

Если вы хотите поместить что-то в сборку Maven, которая его генерирует, посмотрите на плагин Buildnumber Maven ( hgchangeset goal) или Maven Mercurial Build Number Plugin

0 голосов
/ 26 октября 2011

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

0 голосов
/ 26 октября 2011

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

...