【问题标题】:Declare a dependency to Google App Engine with Ivy as a whole以 Ivy 为一个整体声明对 Google App Engine 的依赖
【发布时间】:2012-02-03 21:54:30
【问题描述】:

我正在尝试管理 Google App Engine 项目的依赖关系。我使用带有 Google 插件的 eclipse 来生成初始项目。所以我在项目中得到了以下 jars。

/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 来检索这些 jar。显然,我可以一一声明依赖,比如:

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

非常感谢!

【问题讨论】:

  • 嘿@James,好问题。使用应用引擎项目设置 Ivy 需要做什么?我有一堆罐子,想做同样的事情。
  • 我最终将所有 jar 文件上传到我的私有 maven 存储库,并在每个 Ivy 模块中引用它们的 echo。这并不优雅,但它是我解决它的最快方法。

标签: google-app-engine ivy


【解决方案1】:

简短回答:不。

Ivy 只会下载额外的 jars/artifacts 如果它们被明确列为依赖项。

对于

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

要工作,必须存在一个名为 appengine 的人工制品,它会将您所需的所有人工制品列为依赖项。
使用 maven repo 你必须自己列出每个所需的依赖项。

如果您有自己的存储库,则可以构建一个支持您的需求的工件,但您也必须维护它。

【讨论】:

    【解决方案2】:

    不知道如何在一行中做到这一点,但这是我的 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"/>
    

    【讨论】:

      猜你喜欢
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2014-01-17
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多