Что такое Ivy-эквивалент версий Maven: display-dependency-updates? - PullRequest
3 голосов
/ 09 февраля 2011

У меня есть файл ivy.xml, в котором я явно указываю свои зависимости. Есть ли в Ivy встроенные функции, которые позволят мне обнаруживать или автоматически обновлять мои зависимости, которые устарели?

Я не хочу использовать latest.release, потому что я хочу полностью стабильную и воспроизводимую сборку. Но время от времени я хочу обновить некоторые зависимости, и в то же время было бы хорошо ответить на вопрос, какие другие зависимости устарели?

Ответы [ 4 ]

2 голосов
/ 11 февраля 2011

Как и вы, я использую динамические версии только для внутренних зависимостей.При обновлении, в начале нового этапа разработки, я бы использовал один из инструментов поиска в хранилище для обнаружения новых версий сторонних библиотек:

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

What I 'Я предлагаю создать отчет о зависимости ivy и использовать его для проверки использования вашего кода.Я нахожу это очень полезным, особенно учитывая, что некоторые сторонние модули Maven плохо себя ведут и будут импортировать много ненужных библиотек в мой путь к классам.

Ниже приведен пример моей стандартной цели зависимостей target:

  <target name='dependencies' description='Resolve project dependencies and set classpaths'>
    <ivy:resolve/>
    <ivy:report todir='${ivy.reports}' graph='false' xml='false'/>

    <ivy:cachepath pathid="compile.path"  conf="compile"/>
    <ivy:cachepath pathid="provided.path" conf="provided"/>
    <ivy:cachepath pathid="runtime.path"  conf="runtime"/>
    <ivy:cachepath pathid="test.path"     conf="test"/>
  </target>

Надеюсь, это поможет .... Если вы найдете способ автоматически управлять этим, мне будет интересно.

1 голос
/ 02 июля 2012

Я не уверен, является ли это лучшим решением или нет, но вы можете создать конфигурацию (например, "checklatest"), которая запрашивает последние версии, а затем запустить отчет для этого.

Например, в вашем файле ivy.xml: ...

<dependencies>
    .... 
    <dependency org="somegroup" name="somename" 
        rev="latest.release" conf="checklatest->default"/>   
</dependencies>

и затем запустите задачу ant, которая использует задачу для этой конфигурации.

Даже там не обязательно собирать последнюю версию - например, Apache commons-httpclient в конечном итоге был включен в проект httpcomponents, поэтому запрос на последний "commons-httpclient" в группе "commons-" httpclient "найдет только версию 3.1. Но если вы посмотрите на дату публикации отчета, сгенерированного Айви, должно быть достаточно ясно, что что-то произошло, когда последняя публикация была в 2007 году. В этот момент вам придется провести расследование.

1 голос
/ 01 апреля 2011

Один из способов - использовать ivy: makepom, а затем запустить версии mvn: display-dependency-updates с использованием сгенерированного pom.

0 голосов
/ 22 октября 2018

checkdepsupdate - грубый эквивалент в Ivy.

Это дает вам вывод как:

[ivy:checkdepsupdate]   com.sun.mail#javax.mail 1.5.4 -> 1.6.2
[ivy:checkdepsupdate]   commons-codec#commons-codec 1.10 -> 1.11
[ivy:checkdepsupdate]   org.apache.commons#commons-compress 1.12 -> 1.18
[ivy:checkdepsupdate]   commons-dbutils#commons-dbutils 1.5 -> 1.7
[ivy:checkdepsupdate]   commons-io#commons-io   2.4 -> 2.6
[ivy:checkdepsupdate]   org.apache.commons#commons-lang3    3.6 -> 3.8.1
[ivy:checkdepsupdate]   org.apache.commons#commons-text 1.1 -> 1.6
[ivy:checkdepsupdate]   org.apache.poi#poi  3.13 -> 4.0.0
...