簡體   English   中英

SVN修訂版號可在編譯的GWT包中訪問

[英]SVN revision number accessible in compiled GWT package

我有一個GWT項目,其源代碼在SVN中管理,使用Maven打包,並通過Hudson管理其構建。 我想在應用程序根HTML文件底部的注釋中看到最新簽入/構建的SVN修訂版號。 我不關心在開發過程中發生這種情況!

以下是我迄今為止用Google搜索的選項,但沒有成功:

  • 在構建之后,我可以讓Hudson將構建/修訂號寫入其構建輸出文件之一(即應用程序根HTML文件)嗎? 我見過沒辦法做到這一點。
  • 我可以讓Maven將SVN修訂號寫入其構建輸出文件之一(即應用程序根HTML文件)嗎? 我已經看到Maven將這個寫入JAR / WAR清單文件(可以在Java代碼中訪問)的方法,但我不確定這是否適用於GWT(我不是特別了解內部的GWT)。
  • 我可以將SubVersion作為預提交掛鈎,將版本號寫入特定文件嗎? 我知道很容易將版本號寫入您正在編輯的文件中,但不太確定要寫入一個完全獨立的文件(因此無論是否在該提交中更改,它都會在每次提交時更新)。

有沒有人有一個完整的,端到端的例子來說明如何使這些工作? 我一直在尋找代碼/配置的小片段,它們完成了工作的一部分,但並不是我正在尋找的任何東西。

謝謝!

通過組合Maven和Hudson,您可以實現您所需要的。 在這個例子中,讓我們假設您希望Web應用程序根目錄下的文件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>

確保Hudson正在構建您的項目。 Subversion checkout,它將為每個構建設置SVN_REVISION環境變量,Maven將填充它。

此解決方案適用於那些持續獲取{SVN_REVISION}而不是目標文件中的實際SVN_REVISION值的人

我的解決方案也是使用過濾。 但是,因為我希望SVN_REVISION出現在我的gwt應用程序的主html頁面內(作為“打擊”用戶緩存的一種方式,確保如果我們執行新的構建,然后用戶下載最新的html文件),我不知道能夠使用Jason Terk的解決方案。 html文件只打印{SVN_REVISION}而不是實際的SVN_REVISION值。

所以我在<properties>定義了一個屬性:

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

然后我確定我正在過濾相應的html文件(如Jason的解決方案中所述),然后在html文件中“提取”SVN_REVISION,如下所示:

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

簡而言之 - 我無法直接從html文件中引用{SVN_REVISION}屬性,所以我通過<properties> “包裝”它,讓maven引用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM