2

我正在处理一个 GWT/AppEngine 项目,并注意到我所有的 GWT java 类最终都以编译形式出现在appcfg 暂存目录的WEB-INF/classes/ projectpackage /client/文件夹中。这不仅会为每次部署创建一堆不需要的上传数据,而且我真的不想与全世界共享这些文件。

有没有办法从上传中排除这些文件?Eclipse 中的设置会很棒,但是,appengine-web.xml 中的条目当然也可以做到这一点......

4

2 回答 2

2

您可以使用 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版本)进行上传

于 2012-09-22T22:44:51.963 回答
1

我认为最好的方法是将客户端和服务器分成两个项目。GPE 喜欢将它们放在同一个项目中,但这具有单个输出文件夹和单个类路径的烦人副作用。

你不能告诉它把你的输出编译到不同的文件夹,因为那样你的服务器类文件就不会被传递到那里!

除了将两个项目分开之外,我认为最好的答案是在上传之前编写一个脚本来删除客户端/子目录。由于 GPE 部署按钮缺乏可编写脚本,我们感到很沮丧,因此我们将编译/部署过程切换为 ant 任务。

注意:WEB-INF 不是公开可见的,所以你可能没有向全世界展示你的类文件。

于 2012-09-22T22:20:19.180 回答