Статьи

Развертывание в пакет Drone с Maven Tycho

Эта статья представляет собой краткий обзор развертывания артефактов OSGi из сборки Maven Tycho непосредственно в Package Drone [1].

Установка и настройка

Первым делом нужно настроить экземпляр Package Drone. Короче говоря, вам понадобится машина с Linux, экземпляр MySQL и Java 8. В вики Package Drone уже есть несколько страниц, поэтому эта статья будет посвящена фактическому процессу развертывания:

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

Создание и настройка канала

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

Это создаст неназванный канал. Которому затем можно дать имя, используя «Редактировать канал».

Для этого урока мы будем использовать в maven1качестве названия канала. Идентификатор канала будет другим, так как он генерируется автоматически.

Каналы в основном являются только контейнером для артефактов (BLOB) и могут быть расширены с помощью функциональности путем добавления «аспектов».

Перейдите в «Редактировать» -> «Настроить аспекты» и добавьте следующие аспекты:

  • Hasher — Создание хэшей BLOB
  • MIME — Извлечение MIME типа
  • OSGi — Извлечение метаданных OSGi
  • Репозиторий P2 — Создание информации для P2

Поскольку канал по-прежнему пуст, видимой разницы с состоянием до этого не будет.

Следующим шагом является добавление «ключей развертывания». Поэтому вместо повторного использования учетных данных пользователей Package Drone использует «ключи развертывания» для проверки подлинности приложений, которые хотят развернуть содержимое в хранилище. Идея состоит в том, чтобы создать группу развертывания, которая содержит один или несколько ключей развертывания. Группы развертывания назначаются для канала, поэтому все ключи в назначенных группах могут развертываться на этих каналах. Если ключ развертывания скомпрометирован, его можно легко удалить из группы и заменить другим, без необходимости перенастраивать все каналы.

Переключение на вкладку «Развертывание ключей» позволяет настроить группы развертывания / ключи для этого канала. Изначально их нет, поэтому нужно создать хотя бы один.

После создания его можно добавить в канал на том же экране, что и раньше. При нажатии на клавишу (элемент справа) появится диалоговое окно с параметрами развертывания Maven. Пароль, который должен использоваться при фактическом развертывании, присутствует в теге <password>.

Также можно щелкнуть в группе развертывания (слева) и получить полный список всех ключей развертывания для этой группы.

Сборка и развертывание

Таким образом, вместо создания полного проекта Maven Tycho в этой статье, мы будем повторно использовать один из демонстрационных проектов, предоставленных Maven Tycho, в своих репозиториях и развернуть их в Package Drone с помощью параметра Maven » altDeploymentRepository«.

Прежде всего, нам нужно получить исходный код демонстрационных проектов, используя » git» из командной строки:

git clone http://git.eclipse.org/gitroot/tycho/org.eclipse.tycho-demo.git

Это проверит несколько примеров проектов, и мы будем использовать « ipt01» для этого шага. Построение и развертывание — это просто перейти в нужный каталог и запустить mvn deploy с правильными параметрами. Поскольку мы не хотим переходить на демонстрационный проект » pom.xml«, мы будем использовать свойство Maven » altDeploymentRepository«, указанное в командной строке. Для получения дополнительной информации об этом свойстве см. [2].

Важной частью этого свойства является URL-адрес сервера. Поскольку развертывание Maven использует базовую HTTP-аутентификацию, можно предоставить ключ развертывания из Package Drone в форме имя пользователя: пароль, непосредственно в URL: http://deploy:deploy-key@server/maven/maven1где «deploy-key», конечно, является ключом развертывания из Package Drone (тот, который из элемента <password> в предыдущем разделе), а не идентификатор ключа развертывания и не термин «ключ развертывания» ? Таким образом, ключ, использованный в следующей команде (a06b637e…), не будет работать в вашей настройке, поскольку ваш сервер создаст другой ключ, и вы должны заменить его одним из ваших ключей (см. предыдущий раздел).

cd org.eclipse.tycho-demo/itp01
mvn deploy -DaltDeploymentRepository=pdrone::default::http://deploy:a06b637e55a75d501d879c09079d189a796208cbd6d220395df4c5749e42f88f@localhost:8080/maven/maven1

Поэтому после некоторого времени загрузки, сборки и загрузки Maven должен закончить с «BUILD SUCCESS» и, оглянувшись на канал, вы увидите несколько артефактов. В основном это то, что Maven загрузил, и Package Drone сохранил его как есть. Посмотрев на «Details» одного артефакта «.jar», вы увидите, что Package Drone извлек метаданные OSGi во время процесса загрузки, а проверка представления «OSGi» -> «Bundles» даст вам более хороший обзор OSGi связанные артефакты. Обратите внимание, что представление OSGi будет видно только тогда, когда аспект «OSGi» был добавлен в канал.

Поскольку ранее мы также добавили аспект «хранилище P2», можно перейти по ссылке «хранилище P2» непосредственно к адаптеру хранилища P2 этого канала. Просмотр content.xmlи artifacts.xmlдаст вам те же метаданные, которые сгенерировал и загрузил Tycho.

Примечание. В этом сценарии повторно используются метаданные P2, сгенерированные Maven Tycho в процессе сборки. Он загружен и будет снова собран как полный репозиторий P2. Однако также можно позволить Package Drone отбрасывать метаданные Tycho во время загрузки и создавать свою собственную версию. Это полезно, если вы также хотите загрузить артефакты из сборки не Maven Tycho, где метаданные P2 не генерируются и не загружаются во время сборки. Но эта настройка может быть частью последующей статьи.

Доступ к каналу с использованием P2

После загрузки артефактов в канал они могут быть доступны с помощью программного обеспечения, совместимого с P2 (например, Eclipse PDE или Maven Tycho). Точка входа для адаптера P2 — это http://localhost:8080/p2/>где «канал» — это либо идентификатор канала, либо имя (в данном случае «maven1»).

Если, конечно, в текущем нет функции или категории Eclipse. Вот почему диалог Eclipse P2 ничего не найдет в этом хранилище. Но это ограничение самого Диалога. Все инструменты P2 смогут вытащить пакет tycho.demo.itp01.

Поэтому следующим шагом будет добавление функции Eclipse в сборку Maven Tycho и ее развертывание вместе с пакетом, или создание другого пакета, в зависимости от «tycho.demo.itp01» и настройки разрешения Maven Tycho http://localhost:8080/p2/maven1для сборки.

[1] http://packagedrone.org
[2] http://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html#altDeploymentRepository