2012-09-11 34 views
0

我剛剛安裝了Google Eclipse插件並創建了我的第一個測試Web應用程序項目(同時使用GWT和GAE SDK)。該插件自動生成了一個項目,其中有一個war/目錄,其中包含一些特定的子目錄和文件。對於其中的許多在線搜索只返回了他們的其他類似autogenerations但沒有他們,或者他們做了任何真正的解釋:Google App Engine Warfile目錄結構

  • war/WEB-INF/deploy/<myapp>/rpcPolicyManifest/**
  • war/WEB-INF/deploy/<myapp>/symbolMaps/**
  • war/<myapp>/symbolmanifest.json
  • gwt-unitCache/**

我也是一個litte混淆了什麼適當的結構應該是GWT戰爭將被部署到GAE。什麼內容應該打包在war/WEB-INF/?根據war/根目錄應打包哪些內容? GWT/GAE WARs的其他特殊注意事項?提前致謝!

回答

1

幾乎所有在war/文件夾被部署到GAE。除了插件使用的臨時文件,如war/WEB-INF/appengine生成的/

該文件夾包含設置GAE所需的東西。這包括servlet,隊列,日誌記錄,RPC等的GAE設置。它還包括使用服務器端和一些GWT映射的庫。

請注意,GWT庫僅在編譯時需要,而不是在服務器上。您可以將所有GWT庫放在war /之外的lib /文件夾中。


  • 戰爭/ WEB-INF /部署/ <MYAPP>/rpcPolicyManifest/**

RPC用於直接從GWT代碼調用服務器的方法。 GWT/GAE旨在允許RPC開箱即用。我的猜測是,RPC策略清單文件的存在足以配置GAE以允許GWT代碼使用RPC,因此他們只是將它放在那裏,因此您不必擔心它。


  • 戰爭/ WEB-INF /部署/ <MYAPP>/symbolMaps/**

該插件會自動將這裏所需要的東西,所以你沒有觸摸它做。但符號映射似乎是由GWT用來根據瀏覽器版本提供不同版本的應用程序的字典。在我symbolMap一個文件的前幾行這樣寫的:

# { 1 } 
# { 'user.agent' : 'gecko1_8' } 
# jsName, jsniIdent, className, memberName, sourceUri, sourceLine 
Duration,,com.google.gwt.core.client.Duration,,jar:file:/opt/eclipse/plugins/com.google.gwt.eclipse.sdkbundle_2.4.0.v201208080121-rel-r42/gwt-2.4.0/gwt-user.jar!/com/google/gwt/core/client/Duration.java,21 

指定如何JavaScript的符號「長」應解釋,考慮到用戶代理是壁虎1.8。每個瀏覽器編譯(FF,Opera,Safari,IE等)都有自己的映射,允許GWT編譯器進行瀏覽器特定的優化。


  • 戰/ <MYAPP> /symbolmanifest.json

我沒有在我的項目這個文件,但它可能涉及到GWT符號映射如上所述。我的猜測是它定義了GWT應用程序使用的JavaScript符號。如果您從中發佈了一段代碼,我們將能夠看到是否屬於這種情況。


  • GWT-unitCache/**

這是一個緩存文件夾在開發過程中才會被使用。見the release notes for GWT 2.4.0

持久單位緩存:GWT編譯器和開發模式現在緩存 編譯文物運行之間。這導致更快的迭代開發時間 。