2010-11-01 15 views
6

En mi aplicación web, hay dos directorios separados lib:Dividir recuperado artefactos en dos lib separados

  • /lib, y
  • /web/webroot/WEB-INF/lib.

La idea detrás de esto es que las bibliotecas de esta última son utilizados por código de front-end solamente, y la primera por tanto el front-end y el código de lógica de negocio. Hay un cargador de clases que permite que el código de lógica de negocios no vea los contenedores en/web/webroot/WEB-INF/lib.

¿Cómo puedo saber a hiedra que ciertas dependencias deben ir al segundo directorio mientras que todas las demás van al primero?

No es trival, ya que el cargador de clase web puede ver jar en ambos directorios y no quiero jar en ambos directorios.

Respuesta

15

Las configuraciones se utilizan para crear agrupaciones lógicas de dependencias:

ivy.xml

<ivy-module version="2.0"> 
    <info organisation="com.myspotontheweb" module="demo"/> 
    <configurations> 
     <conf name="frontEnd" description="Jars used by front end"/> 
     <conf name="businessLogic" description="Jars used for business logic"/> 
    </configurations> 
    <dependencies> 
     <dependency org="commons-lang" name="commons-lang" rev="2.5" conf="businessLogic->default"/> 
     <dependency org="commons-codec" name="commons-codec" rev="1.4" conf="businessLogic->default"/> 
     <dependency org="commons-cli"  name="commons-cli"  rev="1.2" conf="frontEnd->default"/> 
     <dependency org="commons-logging" name="commons-logging" rev="1.1.1" conf="frontEnd->default"/> 
    </dependencies> 
</ivy-module> 

La hiedra recuperar tarea ant puede utilizar estas configuraciones para poblar sus directorios:

build.xml

<target name="init" description="--> retrieve dependencies with ivy"> 
    <ivy:retrieve conf="businessLogic" pattern="lib/[artifact].[ext]"/> 
    <ivy:retrieve conf="frontEnd" pattern="web/webroot/WEB-INF/lib/[artifact].[ext]"/> 
</target> 

Ejemplo

$ find . -type f 
./build.xml 
./ivy.xml 
./lib/commons-lang.jar 
./lib/commons-codec.jar 
./web/webroot/WEB-INF/lib/commons-cli.jar 
./web/webroot/WEB-INF/lib/commons-logging.jar 
+0

¿Cuál es el significado de 'businessLogic-> default' y' frontend-default' en el archivo ivy.xml? –

+0

@MarcusJuniusBrutus Ver http://stackoverflow.com/questions/13582419/what-does-the-little-arrow-do-in-the-ivy-dependency-section/13597757#13597757 y http://stackoverflow.com/ preguntas/11417304/ivy-what-is-the-master-configuration-and-why-is-it-not-pulling-jvyaml/11420292 # 11420292 –

Cuestiones relacionadas