Номер редакции SVN доступен в скомпилированном пакете GWT - PullRequest
4 голосов
/ 26 августа 2011

У меня есть проект GWT, источник которого управляется в SVN, упакован с использованием Maven, а сборка управляется с помощью Hudson.Я хочу, чтобы номер SVN последней регистрации / сборки был виден в комментарии внизу корневого HTML-файла приложения.Мне все равно, где в процессе разработки это происходит!

Вот варианты, которые я до сих пор гуглил, но безуспешно:

  • Могу ли я получить Хадсона,после сборки запишите номер сборки / ревизии в один из его выходных файлов сборки (а именно, корневой HTML-файл приложения)?Я не видел способа сделать это.
  • Могу ли я заставить Maven записать номер редакции SVN в один из выходных файлов его сборки (а именно, корневой HTML-файл приложения)?Я видел, как Maven записывал это в файл манифеста JAR / WAR (к которому затем можно получить доступ в коде Java), но я не уверен, что это работает в GWT (я не особенно осведомлен о внутренностяхGWT).
  • Могу ли я получить SubVersion для записи номера версии в конкретный файл в качестве ловушки перед фиксацией?Я знаю, что легко записать номер версии в файл, который вы редактируете, но не уверен в том, что запись в совершенно отдельный файл (так что он обновляется при каждом коммите, независимо от того, был ли он изменен в этом коммите).

Есть ли у кого-нибудь полный, исчерпывающий пример того, как заставить все это работать?Я постоянно нахожу небольшие фрагменты кода / конфигурации, которые выполняют одну часть работы, но не все, что я ищу.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 26 августа 2011

Вы можете достичь того, что ищете, с помощью комбинации Maven и Hudson. В этом примере давайте представим, что вы хотите, чтобы файл version.txt в корне вашего веб-приложения содержал ревизию.

version.txt:

${SVN_REVISION}

В вашем проекте pom.xml включить фильтрацию в maven-war-plugin:

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.1</version>
  <configuration>
    <webResources>
      <webResource>
        <directory>src/main/webapp</directory>
        <filtering>true</filtering>
        <includes>
          <include>version.txt</include>
        </includes>
      </webResource>
    </webResources>
  </configuration>
</plugin>

Убедитесь, что Хадсон создает ваш проект через. Проверка Subversion, и она будет устанавливать переменную окружения SVN_REVISION для каждой сборки, и Maven заполнит ее.

0 голосов
/ 13 февраля 2012

Это решение для тех, кто продолжает получать {SVN_REVISION} вместо фактического значения SVN_REVISION в целевом файле .

Моим решением было также использовать фильтрацию.Однако, поскольку я хотел, чтобы SVN_REVISION появлялся на главной html-странице моего gwt-приложения (в качестве средства «борьбы» с кешем пользователя, чтобы убедиться, что если мы выполним новую сборку, то пользователь загрузит последний html-файл), я не былне могу использовать решение Джейсона Терка.HTML-файл просто напечатал {SVN_REVISION} вместо фактического значения SVN_REVISION.

Так что я определил свойство внутри <properties>:

<properties>
    ...
    <buildVersion>${SVN_REVISION}</buildVersion>
    ...
</properties>

Затем я убедился, что фильтрую соответствующий HTMLфайл (как описано в решении Джейсона), а затем «извлек» SVN_REVISION в html-файл следующим образом:

<script type="text/javascript">
    ...
    var versionIdSuffix = '?v=${buildVersion}';
    ....
</script>

В двух словах - я не смог напрямую ссылкасвойство {SVN_REVISION} из html-файла, поэтому я «обернул» его через <properties>, позволив maven ссылаться на него.

...