Объявите зависимость от Google App Engine с помощью Ivy в целом.

Я пытаюсь управлять зависимостью проекта Google App Engine. Я использую eclipse с плагином Google для создания исходного проекта. Итак, я получил следующие банки внутри проекта.

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

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


person James Gan    schedule 06.01.2012    source источник
comment
Привет @James, хороший вопрос. Что нужно сделать, чтобы настроить Ivy для работы с проектом движка приложений? У меня есть куча баночек, и я хочу сделать то же самое.   -  person Scott    schedule 05.03.2012
comment
Наконец-то я загружаю все jar-файлы в свой частный репозиторий maven и ссылаюсь на них в каждом модуле Ivy. Это не элегантно, но для меня это самый быстрый способ решить эту проблему.   -  person James Gan    schedule 08.03.2012


Ответы (2)


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

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

Для

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

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

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

person oers    schedule 06.01.2012

Не знаю, как это сделать в одну строку, но вот мой ivy.xml и ivysettings.xml

плющ.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"/>

person Bill Comer    schedule 04.05.2012