Объявите зависимость от Google App Engine с Ivy в целом - PullRequest
2 голосов
/ 06 января 2012

Я пытаюсь управлять зависимостями проекта Google App Engine.Я использую затмение с плагином Google для генерации начального проекта.Итак, я получил следующие jar-файлы внутри проекта.

/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).

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 06 января 2012

Краткий ответ: Нет.

Ivy будет загружать дополнительные jar / артефакты только в том случае, если они явно указаны в качестве зависимости.

Для работы

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

,должен существовать артефакт с именем appengine, в котором все необходимые артефакты перечислены как зависимости.
Используя репозиторий maven, вы должны самостоятельно составить список всех необходимых зависимостей.

Если у вас есть собственный репозиторий, выможет создать артефакт, соответствующий вашим требованиям, но вам также придется поддерживать его.

0 голосов
/ 04 мая 2012

Не знаю, как это сделать в одну строку, но вот мой 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"/>

...