我刚刚安装了 Google Eclipse 插件并创建了我的第一个测试 Web 应用程序项目(使用 GWT 和 GAE SDK)。该插件自动生成了一个具有 war/
的项目其中包含一些特殊的子目录和文件的目录。对其中许多的在线搜索仅返回了它们的其他类似自动生成,但没有对它们是什么或它们做什么有任何真正的解释:
-
war/WEB-INF/deploy/<myapp>/rpcPolicyManifest/**
-
war/WEB-INF/deploy/<myapp>/symbolMaps/**
-
war/<myapp>/symbolmanifest.json
-
gwt-unitCache/**
对于将要部署到 GAE 的 GWT WAR 的正确结构应该是什么,我也有点困惑。 war/WEB-INF/
下应该打包哪些内容? war/
下应该打包哪些内容根? GWT/GAE war 还有其他特殊注意事项吗?提前致谢!
最佳答案
war/ 文件夹中的几乎所有内容都会部署到 GAE。插件使用的临时文件除外,例如 war/WEB-INF/appengine- generated/
war/WEB-INF/ 文件夹包含设置 GAE 所需的内容。这包括 servlet、队列、日志记录、RPC 等的 GAE 设置。它还包括服务器端使用的库和一些 GWT 映射。
请注意,GWT 库仅在编译时需要,而不是在服务器上。您可以将所有 GWT 库放在 war/之外的 lib/文件夹中。
<小时/>- war/WEB-INF/deploy/
/rpcPolicyManifest/**
RPC用于直接从 GWT 代码调用服务器方法。 GWT/GAE 旨在允许开箱即用的 RPC。我的猜测是,RPC 策略 list 文件的存在足以配置 GAE 以允许 GWT 代码使用 RPC,因此他们只是将其放在那里,因此您不必担心它。
<小时/>- war/WEB-INF/deploy/
/symbolMaps/**
插件会自动添加这里需要的东西,所以你不用碰它。但symbolMaps似乎是GWT使用的字典,用于根据浏览器版本提供不同版本的应用程序。我的一个符号映射文件中的前几行如下所示:
# { 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
它指定了在用户代理是 gecko 1.8 的情况下应如何解释 JavaScript 符号“Duration”。每个浏览器编译(FF、Opera、Safari、IE 等)都有自己的映射,允许 GWT 编译器进行特定于浏览器的优化。
<小时/>- war/
/symbolmanifest.json
我的项目中没有这个文件,但它可能与上面提到的 GWT 符号映射有关。我的猜测是它定义了 GWT 应用程序使用的 JavaScript 符号。如果您发布其中的片段,我们将能够查看情况是否如此。
<小时/>- gwt-unitCache/**
这是一个仅在开发期间使用的缓存文件夹。请参阅the release notes for GWT 2.4.0 :
Persistent Unit Cache: GWT Compiler and Development mode now cache compilation artifacts between runs. This results in faster startup time for iterative development.
关于java - Google App Engine Warfile 目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12368427/