我正在处理一个 GWT/AppEngine 项目,并注意到我所有的 GWT java 类最终都以编译形式出现在appcfg 暂存目录的WEB-INF/classes/ projectpackage /client/文件夹中。这不仅会为每次部署创建一堆不需要的上传数据,而且我真的不想与全世界共享这些文件。
有没有办法从上传中排除这些文件?Eclipse 中的设置会很棒,但是,appengine-web.xml 中的条目当然也可以做到这一点......
我正在处理一个 GWT/AppEngine 项目,并注意到我所有的 GWT java 类最终都以编译形式出现在appcfg 暂存目录的WEB-INF/classes/ projectpackage /client/文件夹中。这不仅会为每次部署创建一堆不需要的上传数据,而且我真的不想与全世界共享这些文件。
有没有办法从上传中排除这些文件?Eclipse 中的设置会很棒,但是,appengine-web.xml 中的条目当然也可以做到这一点......
您可以使用 Ant 来完成此操作,并通过让您的类 jarred 获得额外的性能优势。
1)从eclipse运行gwt编译
2) 运行类似于下面的 ant 任务(使用 Eclipse 使用 Ant 视图轻松完成):
<property name="staging.dir" value="war" />
<property name="classes.dir" value="${staging.dir}/WEB-INF/classes" />
<target name="jarClasses">
<delete file="${staging.dir}/WEB-INF/lib/classes.jar" />
<echo> ${staging.dir}/WEB-INF/lib/classes.jar DELETED </echo>
<jar destfile="${staging.dir}/WEB-INF/lib/classes.jar" basedir="${classes.dir}"
excludes="${classes.dir}/projectpackage/client/*.*"/>
<echo> ${staging.dir}/WEB-INF/lib/classes.jar JARRED </echo>
<delete dir="${classes.dir}" />
<echo> ${classes.dir} DELETED </echo>
</target>
3)使用appcfg.sh(或windows版本)进行上传
我认为最好的方法是将客户端和服务器分成两个项目。GPE 喜欢将它们放在同一个项目中,但这具有单个输出文件夹和单个类路径的烦人副作用。
你不能告诉它把你的输出编译到不同的文件夹,因为那样你的服务器类文件就不会被传递到那里!
除了将两个项目分开之外,我认为最好的答案是在上传之前编写一个脚本来删除客户端/子目录。由于 GPE 部署按钮缺乏可编写脚本,我们感到很沮丧,因此我们将编译/部署过程切换为 ant 任务。
注意:WEB-INF 不是公开可见的,所以你可能没有向全世界展示你的类文件。