2013-04-25 3 views
1

У меня есть два проекта, A и B, причем B - это webapp. Проект Б зависит от А, так ivy.xml A выглядит что-то вроде:муравей, плющ, несколько проектов и транзитивные зависимости

<ivy-module version="2.0"> 
    <info organisation="com.confused" module="B" status="integration"/>  

    <dependencies> 
    <!-- confused dependencies --> 
    <dependency name="A" rev="latest.integration"/> 

    <!-- 3rd party dependencies --> 
    <dependency org="org.springframework" name="spring-core" rev="3.2.2.RELEASE"/> 
    <dependency org="org.springframework" name="spring-jdbc" rev="3.2.2.RELEASE"/> 
    <dependency org="org.springframework" name="spring-webmvc" rev="3.2.2.RELEASE"/> 
    </dependencies> 
</ivy-module> 

что-то подобное ... и мой модуль выглядит следующим образом:

<ivy-module version="2.0"> 
    <info organisation="com.confused" module="A" status="integration"/>  

    <dependencies> 
    <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5"/> 
    <dependency org="ch.qos.logback" name="logback-classic" rev="1.0.11"/> 
    <dependency org="ch.qos.logback" name="logback-core" rev="1.0.11"/> 
    </dependencies> 
</ivy-module> 

Все хорошо ... кроме того:

When Я строю B, каталог lib заполнен весенними банками вместе с A.jar. Хорошо и хорошо, но если я хочу «развернуть» мой webapp, мне нужно скопировать эти банки в WEB-INF/lib И ТАКЖЕ, что банки регистрации, от которых зависит А. Как мне получить муравьиный/плющ, чтобы «разрешить» банки?

ответ

2

Вы не поставили конфигурацию ваших зависимости зависят от ...

Существует своего рода неофициального набора конфигураций, которые сопоставляются с конфигурациями Maven, которые используются в файле ivy.xml. Этот файл ivy.template.xml использует их, и у меня есть это для моих разработчиков, чтобы основывать их файлы ivy.xml.

Что вам нужно сделать, это сопоставить ваши конфигурации. Вот файл А в ivy.xml:

<ivy-module version="2.0"> 
    <info organisation="com.confused" module="A" status="integration"/>  

    <configurations> 
     <configuration .../> 
     <!-- These are the configurations from the ivy.template.xml file --> 
    </configurations> 

    <dependencies> 
     <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" 
      conf="compile->default"/> 
     <dependency org="ch.qos.logback" name="logback-classic" rev="1.0.11" 
      conf="compile->default"/> 
     <dependency org="ch.qos.logback" name="logback-core" rev="1.0.11" 
      conf="compile->default"/> 
    </dependencies> 
</ivy-module> 

Обратите внимание на conf отображения! compile->default говорит, чтобы использовать это для времени компиляции и для зависимостей времени исполнения. Скопировав это на default, вы загружаете не только эту конкретную банку, но и все транзитивные зависимости.

Теперь ваш ivy.xml для «B» будет выглядеть следующим образом:

<ivy-module version="2.0"> 
    <info organisation="com.confused" module="B" status="integration"/>  

    <configurations> 
     <configuration .../> 
     <!-- These are the configurations from the ivy.template.xml file --> 
    </configurations> 

    <dependencies> 
     <!-- Don't forget the organisation field!--> 
     <dependency org="com.confused" name="A" rev="latest.integration" 
      conf="compile->default"/> 

     <!-- 3rd party dependencies --> 
     <dependency org="org.springframework" name="spring-core" rev="3.2.2.RELEASE" 
      conf="compile->default"/> 
     <dependency org="org.springframework" name="spring-jdbc" rev="3.2.2.RELEASE" 
      conf="compile->default"/> 
     <dependency org="org.springframework" name="spring-webmvc" rev="3.2.2.RELEASE" 
      conf="compile->default"/> 
    </dependencies> 
</ivy-module> 

вашего проект баночки, и его зависимости просто еще один набор банок, что ваш проект «Б» зависит от.

Конечно, у вас должно быть publish A банку в вашем хранилище Ivy, прежде чем «B» сможет его использовать.

+0

Да, я новичок в этом и не совсем понял конфигурации. Я до сих пор этого не делаю, но сейчас собираюсь разобраться! Тем не менее, я придумал достаточно, чтобы доказать, что ты прав, большое спасибо! – ticktock

+0

Конфигурации - это способ для _group_ ваших зависимостей. Например, стандарт должен иметь конфигурацию «компиляции», «тестовую» конфигурацию и конфигурацию «время выполнения». Вы можете создать путь к классам с помощью ' '. Это будет включать только банки, необходимые для компиляции, а не для тестирования или времени выполнения. d используйте что-то вроде ' '. Отображение 'a-> b' - это способ повлиять на поведение, а конфигурации _standard_ у меня совпадают с конфигурацией Maven. –

Смежные вопросы