Какую ценность это дает? Какие варианты использования можно решить с помощью Cave?
Cave
используется для хранения Repositories
, которые содержат важную информацию (такую как расположение, версия, требования, возможности и т. д.) о пакетах (или артефактах в целом). Это одна из трех важных частей в процессе разрешения. Остальные 2 — Resolver
и Resolve Context
.
Resolver
- это то, что вы, возможно, знаете из среды выполнения OSGi. Это то, что сообщает вам, выполнены ли требования вашего пакета (чтобы его можно было запустить). Для этого он обращается к Resolve Context
, чтобы узнать, что доступно, что ожидается, что является необязательным и т. д. Resolve Context
, в свою очередь, консультируется с одним или несколькими Repositories
, чтобы узнать, какие пакеты доступны. Довольно часто это только пакеты, установленные в вашей среде выполнения. Однако возможно иметь среду выполнения, которая будет использовать Repository
, ссылаясь на внешние артефакты, которые можно установить, когда Resolver
определит, что они необходимы.
Примерно ту же концепцию можно использовать во время сборки. Проект Bnd, например, позволяет определить файлы .bndrun
, которые представляют собой версию Resolve Context
на основе свойств. Одна из вещей, которую вы можете предоставить внутри них, — это Repositories
, которые содержат информацию о доступных пакетах. Такие репозитории могут обслуживаться Cave
(или любым другим, включая локальный файл XML). На основе этой информации Bnd
может собрать для вас среду выполнения (сообщить вам, какие пакеты вам нужны в зависимости от того, какие пакеты вы хотите запустить).
Кроме того, Cave
может действовать как репозиторий Maven или прокси-сервер для других репозиториев Maven. Это удобно, так как вы можете использовать Cave
как «единую точку контакта» как для Resolver
, так и для традиционных зависимостей Maven.
person
Milen Dyankov
schedule
04.04.2017