Плющ не загружает вторичную зависимость от Jar

У нас есть небольшая транзитивная проблема между Ivy и Maven:

  • У нас есть проект под названием ivylib. Ivylib - это проект Ant / Ivy, который зависит от другого проекта под названием mvnlib.
  • Mvnlib зависит от другого проекта под названием jersey-client. Это, в свою очередь, зависит от jersey-core. Оба они являются частью com.sun.jersey groupId.

В файле Mvnlib pom.xml у нас есть следующая зависимость:

<dependency>
    <groupId>com.sun.jersey</groupId>
     <artifactId>jersey-client</artifactId>
     <version>1.19</version>

Looking at the jersey-client project, I see the following dependency in its pom.xml file:

<profiles>
    ....
    <profile>
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-core</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

В файле ivy.xml проекта Ivylib у нас есть следующая зависимость:

<dependency org="com.travelclick"       name="ivylib"
    rev="2.1"                   conf="compile->default"/>

Все зависимости Mvnlib загружаются и включаются в Ivylib, за исключением вторичной зависимости jersey-core jar.

Я подозреваю, что это как-то связано с тем, что эта зависимость находится внутри <profile> зависимости, а не указана в самом файле. Мне было интересно, можно ли как-нибудь загрузить core jar.

На данный момент мы просто включили jersey-core jar в наш проект Mvnlib, но мне было интересно, есть ли другой способ.


person David W.    schedule 25.03.2015    source источник


Ответы (1)


Лучше всего проверить местоположение вашего кеша на предмет вашего разрешения IVY. Взглянув на список зависимостей jersey-client, я заметил, что jersey-core не входит в их число. См. Ниже файл ivy-1.19.xml, созданный из POM:

<dependencies>
    <dependency org="junit" name="junit" rev="4.8.2" force="true" conf="test->runtime(*),master(*)"/>
    <dependency org="com.sun.net.httpserver" name="http" rev="20070405" force="true" conf="test->runtime(*),master(*)"/>
    <dependency org="org.osgi" name="osgi_R4_core" rev="1.0" force="true" conf="provided->compile(*),provided(*),runtime(*),master(*)"/>
    ...
</dependencies>

Я бы просто добавил еще одну зависимость в свой файл Ivy. Скопируйте / вставьте строку зависимости "jersey-cleint" и измените ее на "jersey-core". Было бы неплохо, если бы в POM было правильно указано «трикотажное ядро», не так ли? :-)

person brostbeef    schedule 30.03.2015
comment
Вот что я в итоге сделал. У меня вопрос: почему зависимость загружается в нашем проекте Maven, а не в проекте Ivy. Я вижу, что jersey-core - это зависимость, и обычно Ivy загружает все зависимости, но на этот раз этого не произошло. - person David W.; 31.03.2015
comment
Извините, я не могу дать конкретного ответа. Взглянув на спецификацию POM, вы можете поместить ‹dependencies /› в раздел профиля. Могу поспорить, что Айви не разбирает его должным образом. Мне не удалось найти способ зарегистрировать проблему с командой Apache Ivy, но я бы очень хотел. - person brostbeef; 01.04.2015