2012-01-06 78 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"/>