2012-09-11 39 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编译器和开发模式现在缓存 编译文物运行之间。这导致更快的迭代开发时间 。