2011-12-13 44 views
3

复制我只需要两个应用引擎相关的罐子(appengine-api-1.0-sdk-1.6.0.jarappengine-api-labs-1.6.0.jar要准确)GAE罐十几瓶像使用JDO,高速缓存等的那些我真的不需要(保持部署和版本控制灯)。如果我从WEB-INF/lib删除那些GPE不断抱怨并将其复制回来。删除由GPE

同样的事情已经被讨论earlier,但它建议编写一个Ant任务来删除那些我真的不想做的事情(因为我的项目中没有使用任何ant build.xml)。

有没有人有更好的解决方案?我更多的是Netbeans/Maven的人,但为了简单起见,我需要在这里使用eclipse,并正式支持插件。一切都是新鲜安装的。

回答

3

新的Google Eclipse插件有一个选项,允许您删除Datanucleus JAR。这会删除大约5-6个JAR文件。如果你没有看到下面的屏幕,你应该更新你的谷歌Eclipse插件版本:

enter image description here

部署是一个非问题,因为当你部署的SDK检查文件的哈希值在本地文件系统,将它们与Google服务器上的散列进行比较,并仅上传已更改的文件。

0

不幸的是,IMO蚂蚁任务是我发现要做到这一点的唯一方法。 可以作为Ikay建议的插件配置取消datanucleous罐子,但

  1. 它不会在我的新鲜的Eclipse朱诺工作+ 1.7.0 GAE安装
  2. 我用客观化和罐的一个实际上是需要(Geronimo的,不知道它虽然消除因原因1的话)
  3. 它不会删除端点罐子是巨大的,无用的GAE上大多数应用程序

所以我最后决定将所有的运行时库在一个单独的文件夹中(可以通过其他方式进行d和保持排除列表),写一个简单的脚本:

<target name="pre-deploy"> 
    <delete dir="deploy" /> 
    <mkdir dir="deploy" /> 
    <copy todir="deploy"> 
     <fileset dir="war"/> 
    </copy> 
    <delete> 
     <fileset dir="deploy/WEB-INF/lib/" includes="*.jar"/> 
    </delete> 
    <copy todir="deploy/WEB-INF/lib"> 
     <fileset dir="lib/runtime"/> 
    </copy> 
    <!-- pack all classes into single jar for faster gae instance startup --> 
    <jar destfile="deploy/WEB-INF/lib/myjar.jar" basedir="deploy/WEB-INF/classes" /> 
    <!-- delete classes (but not properties!) --> 
    <delete dir="deploy/WEB-INF/classes/com" /> 
</target> 

它也是有用的允许所有包类为单罐子许多报道节省启动时间。部署脚本非常简单:

<import file="${gae.sdk}/config/user/ant-macros.xml" /> 

<target name="deploy" depends="pre-deploy"> 
    <appcfg action="update" war="war" /> 
</target>