Разделить найденные артефакты в двух отдельных каталогах lib - PullRequest
6 голосов
/ 01 ноября 2010

В моем веб-приложении есть две отдельные директории lib:

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

Идеяза этим стоит то, что библиотеки в последнем используются только внешним кодом, а первый - и внешним интерфейсом и кодом бизнес-логики.Имеется загрузчик классов, который позволяет коду бизнес-логики , а не увидеть файлы в / web / webroot / WEB-INF / lib.

Как я могу сказать Айви, что определенные зависимости должны идти во второй каталог, в то время как все другие переходят в первый?

Это не просто, поскольку загрузчик веб-классов можетя вижу jars в обоих каталогах, и я не хочу, чтобы jar был в обоих каталогах.

1 Ответ

15 голосов
/ 04 ноября 2010

Конфигурации используются для создания логических группировок зависимостей:

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>

Задача ant ivy retrieve может использовать эти конфигурации для заполнения ваших каталогов:

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>

Пример

$ 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
...