File 从AppEngine部署中删除不需要的上载

File 从AppEngine部署中删除不需要的上载,file,google-app-engine,gwt,deployment,File,Google App Engine,Gwt,Deployment,我正在从事一个GWT/AppEngine项目,并注意到我所有的GWT java类最终都以编译的形式出现在appcfg staging目录的WEB-INF/classes/projectpackage/client/文件夹中。这不仅会为每次部署创建一堆不需要的上传数据,而且我真的不想与世界共享这些文件 有没有办法从上传中排除这些文件?Eclipse中的一个设置将是惊人的,但是,当然,appengine-web.xml中的一个条目也可以做到这一点……我认为最好的方法是将客户机和服务器分成两个项目。G

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


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

我认为最好的方法是将客户机和服务器分成两个项目。GPE希望它们位于同一个项目中,但这会产生一个输出文件夹和一个类路径的恼人副作用

您不能告诉它将您的输出编译到另一个文件夹,因为这样您的服务器类文件就不会传递到那里了

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


注意:WEB-INF是不可公开查看的,因此您可能还没有向全世界展示您的类文件。

您可以使用Ant实现这一点,并通过调整类来提高性能

1) 从eclipse运行gwt编译

2) 运行下面的ant任务(使用ant视图轻松完成eclipse):


${staging.dir}/WEB-INF/lib/classes.jar已删除
${staging.dir}/WEB-INF/lib/classes.jar
${classes.dir}已删除

3) 使用appcfg.sh(或windows版本)进行上传

谢谢您的快速回复!您知道在实际执行上载之前,部署过程是否可以轻松调用快速批处理文件?我有点害怕将项目一分为二,因为我不确定在dev服务器上并排调试这两个项目会打开哪些蠕虫。是的,这肯定是一个将它们分开的过程-我希望它们是这样开始的,但它们可能精确地将它们放在一起,以便您只需按一个按钮即可部署它。我认为没有办法在GWT编译和deployMaven、Ivy+Ant、Gradle之间插入对批处理文件的调用-选择您的选择。。。选择你的选择。我还没有试过,但听起来很合理,应该可以用。这不是我所希望的干净的一键式解决方案,但无论如何,我现在会检查它是否是最好的答案。非常感谢。
 <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>