【问题标题】:Removing unwanted uploads from AppEngine deployment从 AppEngine 部署中删除不需要的上传
【发布时间】:2012-09-22 22:05:27
【问题描述】:

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

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

【问题讨论】:

  • Maven、Ivy+Ant、Gradle - 选择你的选择......选择你的选择。

标签: file google-app-engine gwt deployment


【解决方案1】:

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

【讨论】:

  • 我还没有尝试过,但这听起来很合理,应该可以。不是我希望的干净的一键式解决方案,但无论如何我都会将其作为最佳答案进行检查。谢谢!
【解决方案2】:

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

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

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

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

【讨论】:

  • 感谢您的快速回复!您知道在实际执行上传之前是否可以轻松地让部署过程调用一个快速批处理文件?我有点害怕将项目一分为二,因为我不确定在开发服务器中并排调试这两个项目方面会打开什么其他蠕虫。
  • 是的,这绝对是一个拆分它们的过程 - 我希望它们以这种方式开始,但它们可能将它们精确地保持在一起,以便您只需单击一个按钮即可部署它。我认为没有办法在 GWT 编译和部署之间插入对批处理文件的调用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
相关资源
最近更新 更多