删除GPE复制的GAE jar

时间:2011-12-13 18:17:17

标签: google-app-engine eclipse-plugin

我的appengine-api-1.0-sdk-1.6.0.jar只需要两个与app引擎相关的jar(appengine-api-labs-1.6.0.jarWEB-INF/lib),但是Eclipse插件(GPE)可以复制十几个罐子用于JDO,缓存等我真的不需要(保持部署和版本控制光)。如果我从WEB-INF/lib删除了那些,GPE会继续抱怨并将其复制回来。

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

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

2 个答案:

答案 0 :(得分:3)

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

enter image description here

部署不是问题,因为在部署时,SDK会检查本地文件系统中文件的哈希值,将这些文件与Google服务器上的哈希值进行比较,并仅上传已更改的文件。

答案 1 :(得分:0)

不幸的是,IMO ant任务是我发现这样做的唯一方法。 您可以像Ikay建议的那样取消选中插件配置中的datanucleous jar,但

  1. 它在我新的Eclipse Juno + 1.7.0 GAE安装中不起作用
  2. 我使用Objectify并且其中一个罐子实际上是需要的(geronimo,不确定它是否因为原因1而移除它)
  3. 它不会删除对于gae上的大多数应用来说巨大且无用的端点jar
  4. 所以我最终将所有运行时库放在一个单独的文件夹中(可以反过来做,并维护一个排除列表)并编写一个简单的脚本:

    <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>
    

    它也很有用,因为允许将所有类打包到单个jar中,许多人报告这些jar可以节省启动时间。部署脚本很简单:

    <import file="${gae.sdk}/config/user/ant-macros.xml" />
    
    <target name="deploy" depends="pre-deploy">
        <appcfg action="update" war="war" />
    </target>