Замораживание транзитивных зависимостей от выпуска maven для получения полностью воспроизводимой сборки

Проблема, связанная с основными концепциями maven:

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

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

Как решить проблему? Есть известное решение?

Я думал (просто идея) о создании плагина, который бы при выпуске выгружал бы все зависимости проекта в отдельный файл, а потом при сборке в будущем приоритет имели бы прочитанные из файла зависимости по сравнению со стандартным способом, который maven использует для разрешения зависимостей. Но боюсь, что для этого нет плагина api. Так что это потребует некоторого взлома, которого я хотел бы избежать. Есть ли другой способ?

Спасибо, Lukasz

5
задан Lukasz Guminski 19 June 2012 в 14:06
поделиться