2010-11-01 12 views
6

W mojej aplikacji internetowej, istnieją dwa oddzielne katalogi lib:dzielona pobierane artefakty w dwóch oddzielnych katalogach lib

  • /lib i
  • /web/webroot/WEB-INF/lib.

Ideą jest to, że biblioteki w tym ostatnim są wykorzystywane tylko przez kod typu front-end, a pierwszy z nich przez zarówno front-end i kod logiki biznesowej. Istnieje moduł ładujący klasy, który pozwala kodowi logiki biznesowej , a nie zobaczyć słoiki w/web/webroot/WEB-INF/lib.

Jak mogę powiedzieć bluszczowi, że niektóre zależności powinny przejść do drugiego katalogu, a wszystkie inne przejść do pierwszego?

Nie jest to trival, ponieważ program ładujący klasy WWW może widzieć słoiki w obu katalogach i nie chcę, aby słoiki były w obu katalogach.

Odpowiedz

15

Konfiguracje są wykorzystywane do tworzenia logicznych ugrupowań zależności:

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> 

Bluszcz odzyskać ant zadania mogą korzystać z tych konfiguracji, aby wypełnić swoje katalogi:

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> 

Przykład

$ 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

Jaki jest sens 'businessLogic-> default' i' frontend-default' w pliku ivy.xml? –

+0

@MarcusJuniusBrutus Zobacz http://stackoverflow.com/questions/13582419/what-does-the-little-arrow-do-in-the-ivy-dependency-section/13597757#13597757 i http://stackoverflow.com/ pytania/11417304/ivy-co-jest-master-konfiguracji-i-dlaczego-to-nie-ciągnięcie-jvyaml/11420292 # 11420292 –

Powiązane problemy