Использование Ivy, Maven и проблема с POM - PullRequest
2 голосов
/ 13 октября 2010

Я смотрю и играю с IVY в последнее время для нового проекта.Я знаю, что на эту тему есть два лагеря, и по многим причинам люди выбирают один или другой.Этот вопрос не сфокусирован на этом.

Что меня интересует, так это когда я использую IVY, чтобы сказать, что я получаю Spring Frame с помощью репозитория Maven 2, я получаю файлы Ton of Jar, а затем возникают проблемы с поиском подходящеговерсия, и я должен исключить элементы и т. д. Теперь, если я отключаю Poms, я получаю только фреймворк Spring Framework, и все работает.

Есть ли причина, по которой так много файлов Jar доставляются с помощью POM- приходит ли такое же количество файлов Jar, если вы используете чистое решение Maven?


@ Pascal_Thivent Вот обновление, которое я имею в виду.

Это вывод, который я получаю:

[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      ::          UNRESOLVED DEPENDENCIES         ::
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      :: javax.ejb#ejb;3.0: not found
[ivy:retrieve]      :: com.oracle#toplink-essentials;2.41: not found
[ivy:retrieve]      :: com.oracle#oc4j;1.0: not found
[ivy:retrieve]      :: jexcelapi#jxl;2.6.6: not found
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] 
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      ::              FAILED DOWNLOADS            ::
[ivy:retrieve]      :: ^ see resolution messages for details  ^ ::
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      :: javax.faces#jsf-api;1.1!jsf-api.jar
[ivy:retrieve]      :: com.bea.wlplatform#commonj-twm;1.1!commonj-twm.jar
[ivy:retrieve]      :: com.oracle.toplink#toplink;10.1.3!toplink.jar
[ivy:retrieve]      :: com.sun.jdmk#jmxtools;1.2.1!jmxtools.jar
[ivy:retrieve]      :: com.sun.jmx#jmxri;1.2.1!jmxri.jar
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::

Вот мой ivy.xml

    <dependencies>
    <dependency org="jstl" name="jstl" rev="1.1.2"/>
    <dependency org="commons-logging" name="commons-logging" rev="1.1.1" >
        <exclude org="com.sun.jdmk"/>
        <exclude org="com.sun.jmx"/>
        <exclude org="javax.jms"/>
    </dependency>
    <dependency org="commons-lang" name="commons-lang" rev="2.5">
        <exclude org="com.sun.jdmk"/>
        <exclude org="com.sun.jmx"/>
        <exclude org="javax.jms"/>
    </dependency>
    <dependency org="org.springframework" name="spring" rev="2.5.6"/>
    <dependency org="org.springframework" name="spring-webmvc" rev="2.5.6"/>

</dependencies>

Вот мои настройки плюща

<ivysettings>
<settings defaultResolver="myChain" />
<resolvers>
    <url name="com.springsource.repository.bundles.release">
        <ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
        <artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    </url>
    <url name="com.springsource.repository.bundles.external">
        <ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
        <artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    </url>

    <chain name="myChain">

        <resolver ref="com.springsource.repository.bundles.release" />
        <resolver ref="com.springsource.repository.bundles.external"/>
        <ibiblio name="jboss" m2compatible="true" root="http://repository.jboss.org/maven2" checkconsistency="false"/>
        <ibiblio name="libraries" m2compatible="true" checkconsistency="false"/>
        <ibiblio name="ilibraries-mirror" m2compatible="true" root="http://mirrors.ibiblio.org/pub/mirrors/maven2/" checkconsistency="false"/>
        <ibiblio name="sun" m2compatible="true" root="http://download.java.net/maven/2/" checkconsistency="false"/>
    </chain>
</resolvers>

1 Ответ

3 голосов
/ 13 октября 2010

Это немного выстрел в темноте (я не знаю, что означает "отключить POMs" ), но я думаю, что вы на самом деле получаете переходный зависимости (это упрощено, но если A зависит от B и если вы объявите зависимость от A, вы также получите B).

Это одна из функций, которые вы получаете при использовании зависимостей Maven и их метаданных (POM) и решения для управления зависимостями, такого как Maven или Ivy. Это поведение по умолчанию в Maven, и его нельзя отключить (существует мета-проблема по этому поводу, MNG-1977 ). С Ivy похоже, что возможно , например ::

<dependencies>  
   <dependency org="org.hibernate" name="hibernate-core"
               rev="3.3.1.GA" conf='..'
               transitive="false" /> 
</dependencies>

Это то, что вы имели в виду?

Смотри также

...