У меня есть проект, в котором правило maven -forcer не выполняется с многомодульной сборкой с использованием неуникальных снимков (что, к сожалению, является единственным видом снимка, поддерживаемым в Maven 3).
Например, предположим, что -> это отношение "зависит от" и:
- Модуль-A -> Модуль-B -> Модуль-C
- Модуль-А -> Модуль-С
и что модуль 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), поэтому другие решения по-прежнему приветствуются.