2012-01-06 42 views
2

我試圖管理Google App Engine項目的依賴關係。我使用Google插件的eclipse來生成初始項目。所以我在項目裏面有了罐子。向Ivy申明Google App Engine的依賴關係

/war/WEB-INF/lib/appengine-api-1.0-sdk-1.6.1.jar 
/war/WEB-INF/lib/appengine-api-labs-1.6.1.jar 
/war/WEB-INF/lib/appengine-jsr107cache-1.6.1.jar 
/war/WEB-INF/lib/datanucleus-appengine-1.0.10.final.jar 
/war/WEB-INF/lib/datanucleus-core-1.1.5.jar 
/war/WEB-INF/lib/datanucleus-jpa-1.1.5.jar 
/war/WEB-INF/lib/geronimo-jpa_3.0_spec-1.1.1.jar 
/war/WEB-INF/lib/geronimo-jta_1.1_spec-1.1.1.jar 
/war/WEB-INF/lib/jdo2-api-2.3-eb.jar 
/war/WEB-INF/lib/jsr107cache-1.1.jar 

而不是簽入這些jar文件到我的源代碼管理,我想使用ivy在編譯時檢索這些罐子。很顯然,我可以通過一個聲明依賴一個,如:

<dependency name="appengine-api-1.0-sdk" org="com.google.appengine" rev="1.6.1"/> 
... 

但我不知道是否有比聲明罈子一個個更好的辦法,是這樣的:

<dependency name="appengine" org="com.google.appengine" rev="1.6.1"/> 

我希望作爲一個整體來聲明GAE只有一個單一的依賴。上面的依賴聲明不起作用。有沒有一種方法來實現這個目標,而無需創建我自己的存儲庫?設置一個存儲庫看起來很複雜,所以我使用官方的maven倉庫(http://repo1.maven.org/maven2)。

非常感謝!

+0

嘿@詹姆斯,好問題。你需要做什麼來設置常春藤與應用程序引擎項目?我有一堆罐子,想要做同樣的事情。 – Scott 2012-03-05 18:25:48

+0

我終於上傳所有jar到我的私人maven倉庫,並在每個Ivy模塊中引用它們的回聲。這不是優雅的,但它是我解決它的最快方法。 – 2012-03-07 23:40:59

回答

1

簡短的回答:

常春藤只會下載額外的罐子/器物,如果它們被明確列爲依賴關係。

對於

<dependency name="appengine" org="com.google.appengine" rev="1.6.1"/> 

工作,就必須存在的僞像名爲AppEngine上,具有所有列爲依賴你需要的工件。
使用maven repo你必須自己列出每個需要的依賴關係。

如果您有自己的存儲庫,則可以構建支持您的需求的工件,但您也必須保留該工件。

0

不sussed如何做到這一點的一條線,但這裏是我的ivy.xml & ivysettings.xml

的ivy.xml

<ivy-module version="2.0"> 

*「>

<dependency org="com.google.appengine" name="appengine-api-1.0-sdk" rev="${com.google.appengine.version}" transitive="false" conf="build->default" /> 
<dependency org="com.google.appengine" name="appengine-api-labs" rev="${com.google.appengine.version}" transitive="false" conf="build->default" /> 
<dependency org="com.google.appengine" name="appengine-jsr107cache" rev="${com.google.appengine.version}" transitive="false" conf="build->default" /> 

<dependency org="org.datanucleus" name="datanucleus-core" rev="1.1.5" transitive="false" conf="build->default" /> 
<dependency org="org.datanucleus" name="datanucleus-jpa" rev="1.1.5" transitive="false" conf="build->default" /> 

<dependency org="com.google.appengine" name="datanucleus-appengine" rev="1.0.10.final" transitive="false" conf="build->default" /> 

<dependency org="org.apache.geronimo.specs" name="geronimo-jpa_3.0_spec" rev="1.1.1" transitive="false" conf="build->default" /> 
<dependency org="org.apache.geronimo.specs" name="geronimo-jta_1.1_spec" rev="1.1.1" transitive="false" conf="build->default" /> 

<dependency org="com.google.gwt" name="gwt-servlet" rev="2.4.0" transitive="false" conf="build->default" /> 
<dependency org="javax.jdo" name="jdo2-api" rev="2.3-eb" transitive="false" conf="build->default" /> 
<dependency org="net.sf.jsr107cache" name="jsr107cache" rev="1.1" transitive="false" conf="build->default" /> 

ivysettings.xml

<ivysettings> 

<property name="ivy.shared.default.artifact.pattern" value="[module]/[revision]/[type]s/[artifact]-[revision].[ext]" /> 

<resolvers> 
    <chain name="chained" returnFirst="true"> 
     <ibiblio name="ibiblio" root="http://mirrors.ibiblio.org/pub/mirrors/maven/" m2compatible="true"/> 
     <ibiblio name="utilisoft-nexus-thirdparty" root="http://ut-svn-01:8081/nexus/content/repositories/thirdparty/" m2compatible="true"/> 
     <ibiblio name="repo1" root="http://repo1.maven.org/maven2" m2compatible="true"/> 
     <ibiblio name="jboss-hibernate" root="http://repository.jboss.org/maven2/" m2compatible="true"/> 
     <ibiblio name="jboss-hibernate-public" root="http://repository.jboss.org/nexus/content/groups/public-jboss/" m2compatible="true" /> 
     <ibiblio name="ja-sig" root="http://developer.jasig.org/repo/content/groups/m2-legacy/" m2compatible="true" /> 
    </chain> 
</resolvers> 

<property name="com.google.appengine.version" value="1.6.4"/>