4Trabes Historias de una empresa en 100 metros cuadrados

El blog de Trabe Soluciones

Ivy y resolución de dependencias

|

Una receta rápida que nos permite gestionar las dependencias con Ivy en nuestras aplicaciones Play de tal modo que Ivy:

  • se conecte a nuestro repositorio maven donde tenemos artefactos que no se encuentran en el repositorio oficial.
  • busque en la cache local de maven en busca de artefactos que hemos generado pero que no se han publicado en el repositorio.
  • descargue todas las dependencias transitivas.
  • tenga en cuenta clasificadores para distinguir entre artefactos de desarrollo y producción.

En el fichero ivy.xml del proyecto definimos las dependencias marcando con m:classifier aquellas que lo necesiten. En el ejemplo, la primera dependencia es una librería que no ha sido publicada (vive en la caché local), el segundo es un driver JDBC que tenemos en nuestro repo Maven y la tercera una dependencia común.

1
2
3
4
5
6
7
8
<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven">
    <info organisation="com.trabesoluciones" module="my_awesome_app"/>
    <dependencies>
      <dependency org="com.trabesoluciones" name="awesome-api"             rev="1.2.1"    m:classifier="dev"/>
      <dependency org="com.oracle"          name="oracle-jdbcdriver-thin"  rev="10.2.0.4" />
      <dependency org="commons-lang"        name="commons-lang"            rev="2.4"      />
    </dependencies>
</ivy-module>

Para que Ant encuentre todo creamos una cadena de resolución en $HOME/.ivy2/ivysettings.xml

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<ivysettings>
  <settings defaultResolver="customChain"/>
  <resolvers>
    <chain name="customChain" returnFirst="true">
      <ibiblio name="m2local" m2compatible="true" root="file://${user.home}/.m2/repository"/>
      <ibiblio name="trabe"   m2compatible="true" root="http://mvn.trabesoluciones.net/repository"/>
      <ibiblio name="ibiblio" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>

Y por último en la tarea Ant indicamos que use esta configuración:

1
2
3
4
<target name="deps">
  <ivy:configure file="${env.HOME}/.ivy2/ivysettings.xml"/>
  <ivy:retrieve/>
</target>


Lo sentimos, pero los comentarios están cerrados