Maven уникальные снимки и конвергенция зависимостей - PullRequest
4 голосов
/ 29 декабря 2011

У меня есть проект, в котором правило maven -forcer не выполняется с многомодульной сборкой с использованием неуникальных снимков (что, к сожалению, является единственным видом снимка, поддерживаемым в Maven 3).

Например, предположим, что -> это отношение "зависит от" и:

  1. Модуль-A -> Модуль-B -> Модуль-C
  2. Модуль-А -> Модуль-С

и что модуль B и модуль C присутствуют в репозитории моментальных снимков как уникальные сборки. Все заявленные версии модулей в POM в настоящее время 1.0-SNAPSHOT.

Теперь сборка модуля A завершается неудачно:

mvn -pl Module-A install

Результат:

[INFO] --- maven-enforcer-plugin:1.0.1:enforce (enforce) @ Module-A ---
[ERROR] 
Dependency convergence error for com.vivosys.project:Module-C:1.0-SNAPSHOT paths to dependency are:
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
  +-com.vivosys.project:Module-B:1.0-20111228.032527-8
    +-com.vivosys.project:Module-C:1.0-SNAPSHOT
and
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
  +-com.vivosys.project:Module-C:1.0-20111228.032527-6

Транзитивная зависимость разрешается как неуникальная сборка снимков, но прямая зависимость разрешается как сборка уникальных снимков.

Я использую Maven 3.0.3, Maven-Enforcer 1.0.1. В качестве хранилища используется Artifactory 2.4.2, в котором используется опция уникальных снимков (в соответствии с рекомендациями Artifactory, поскольку Maven 3 больше не поддерживает неуникальные снимки).

Решения

Обновление : похоже, артефакт позволяет переопределить поведение клиента maven и сохранить неуникальный снимок в хранилище. Однако по какой-то причине Artifactory не рекомендует этого (см. Рекламный ролик «Maven 3» на http://wiki.jfrog.org/confluence/display/RTF/Local+Repositories), поэтому другие решения по-прежнему приветствуются.

Ответы [ 3 ]

4 голосов
/ 15 июня 2012

Эта ошибка была исправлена ​​( MENFORCER-118 ) и выпущено в версии 1.1.

2 голосов
/ 29 декабря 2011

Вы нажали эту ошибку модуля расширения (повышенную как расширение).

Возможно, строго в качестве обходного пути вы можете явно объявить транзитивную зависимость C как зависимость A?

1 голос
/ 29 января 2012

Единственное решение, доступное до разрешения MENFORCER-118 , по-видимому, заключается в настройке сервера репозитория для использования неуникальных снимков. В Artifactory это можно сделать с помощью: Admin, Repositories, выберите репозиторий снимков и выберите Edit. Затем выберите Nonunique под Maven Snapshot Version Behavior.

...