2011-12-13 63 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>