2010-10-11 63 views
1

我使用一個Ant任務來調用谷歌的GWT編譯器,如:明確控制螞蟻跳過任務,加快GWT編譯

<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> 
<arg value="package.of.GWTClass" /> 
</java> 

這工作,但我想,以避免在重新編譯整個項目每個Ant構建中都沒有任何依賴關係發生了變化。我知道Ant不能自動跟蹤這些依賴關係,但有什麼方法可以手動對它們進行編碼,並且在沒有任何變化時有選擇地跳過目標?

回答

0

您可以將if子句添加到您的螞蟻目標。我們使用它,如下所示:

當你調用目標,你可以通過-D設置gwt屬性使編譯:

ant -Dgwt=yes gwt-compile 

if在目標相反的是unless

希望有所幫助。

1

你也可以考慮嘗試在你的ANT構建中用java編譯來並行GWT編譯步驟。我們使用ANT的標籤來執行GWT編譯步驟以及標準java編譯步驟。很顯然,如果你的電腦有多個核心,這隻會有幫助。

例如

<parallel> 
    <antcall target="gwt-compile"/> 
    <sequential> 
     <antcall target="compile/java"/> 
    </sequential> 
    <parallel> 
     <antcall target="compile/test-unit"/> 
     <antcall target="compile/test-integration"/> 
     <antcall target="compile/test-gwt"/> 
     <antcall target="compile/test-selenium"/> 
    </parallel> 
</parallel> 

我們還定義了針對性只是Firefox瀏覽器運行構建的測試部分(我們在打造專業化檢查)模塊文件,然後也支持全力打造所有的瀏覽器更完整的模塊文件在持續集成構建上。

0

與gwt結合使用uptodate task。它所做的是檢查一個文件是否比另一個文件更新,並設置屬性(如果是)。您將gwt源文件與* .js輸出文件的日期進行比較,如果它更近,則進行編譯。

你必須得到gwt編譯器將使用的所有文件,如果你只有一個模塊名稱並且不能很容易地構造出繼承樹,但是一個簡單但並不總是最佳的方法是隻需使用每個gwt的java文件。然後,在gwt編譯任務中,在編譯之前檢查屬性。