Usar el repositorio público maven con ivy


Tengo un ivy.xml que contiene

<dependencies>
  <dependency org="commons-lang" name="commons-lang" rev="2.4"/>
  <dependency org="foo-bar" name="superwidgets" rev="1.5"/>
</dependencies>

Todo el material de superwidget está alojado en un repositorio maven en http://example.com/m2 / . La documentación de ivy menciona resolutores, pero parece asumir un repositorio de ivy. ¿Cómo puedo agregar un único repositorio maven no oficial a mi configuración ivy para que lo use solo un módulo? (O dicho de otra manera, ¿qué corresponde a la etiqueta <repository> de maven en ivy? Nada elegante, así que esperaría una sola línea en mi hiedra.XML.

Author: ZhiXingZhe - WangYuQi, 2011-01-29

2 answers

Necesita agregar un ivysettings.archivo xml con los siguientes repositorios listados (resolutores en ivy speak)

<ivysettings>
    <settings defaultResolver="chain"/>
    <resolvers>
        <chain name="chain">
            <ibiblio name="central" m2compatible="true"/>
            <ibiblio name="example" m2compatible="true" root="http://example.com/m2/"/>
        </chain>
    </resolvers>
</ivysettings>

En mi opinión, tiene más sentido separar la declaración de dependencia (ivy.xml) del mecanismo de recuperación (ajustes.XML). Esto no es necesario en Maven porque solo admite un tipo de repositorio.

Si quieres ser realmente elegante puedes controlar qué respository sirve un módulo en particular:

<ivysettings>
    <settings defaultResolver="central"/>
    <resolvers>
        <ibiblio name="central" m2compatible="true"/>
        <ibiblio name="example" m2compatible="true" root="http://example.com/m2/"/>
    </resolvers>
    <modules>
        <module organisation="foo-bar" name="superwidgets" resolver="example"/>
    </modules>
</ivysettings>
 44
Author: Mark O'Connor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-27 22:25:01

Prefiero resolvers encadenados que incluyen EBR de SpringSource y Maven Central también, como esto:

<ivysettings>
    <settings defaultResolver="spring-chain" />
    <resolvers>
        <chain name="spring-chain">
            <url name="com.springsource.repository.bundles.release">
                <ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
                <artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
            </url>
            <url name="com.springsource.repository.bundles.external">
                <ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
                <artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
            </url>
            <ibiblio name="ibiblio" m2compatible="true"/>
        </chain>
    </resolvers>
</ivysettings>

Aunque no los uso directamente, prefiero crear y controlar mi propio repositorio local Ivy.

 7
Author: István,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-21 14:52:18