В первой части этой серии статей я рассмотрел использование составных репозиториев, чтобы обеспечить способ объединения сайтов обновлений в один URL-адрес для простоты использования и единой точки входа, с которой можно выполнять обновления.
Во второй части я рассказал о том, почему мы перешли от использования набора SDK, для создания которого — используя устаревший метод «просто распаковать в корневую папку затмений» или «dropin» — на единый сайт обновления целевой платформы, чтобы упростить обслуживание и предоставить многократно используемый артефакт для обеспечения как сборки, так и рабочего пространства.
Теперь давайте посмотрим на легкую задачу, которая говорит, что «чем меньше, тем лучше», когда речь идет о том, чтобы указать p2, откуда получать обновления, и что меньше усилий для вашего пользователя при установке всегда выигрывает.
Если это звучит знакомо, я кратко писал об этом в блоге еще в августе . С тех пор мы также добавили быстрый XSLT-скрипт для удаления категории «Без категории», которую Tycho автоматически добавляет для функций, которые перечислены в вашем site.xml, но не связаны с категорией. Хотя это не связано строго с ассоциированными сайтами, речь идет об удобстве использования; в то время как я приветствую желание, чтобы все принадлежало корзине категорий (возможно, потому, что этого требует модель, используемая Tycho), причина, по которой мы предпочли бы скрыть это, состоит в том, чтобы обезопасить представление установки и не вводить людей в заблуждение, предлагая функции, которые не будут работать на их ОС (например, для которых нет порта XulRunner).
Но я отвлекся …
Ассоциированные сайты
В былые времена вы могли расположить
файл associateSites.xml рядом с вашим site.xml на вашем «классическом» сайте обновлений, и Eclipse Update Manager с радостью прочитал бы этот файл и добавил эти дополнительные сайты в список доступных сайтов обновлений.
Затем появился p2 , и хотя старый способ все еще работал, он больше не был идеальным. Таким образом, новый подход состоял в том, чтобы вставить эти связанные сайты непосредственно в метаданные p2 для сайта, content.xml и artifacts.xml (или content.jar и artifacts.jar).
Этого можно добиться с помощью довольно хакерской аппроксимации — распаковки существующих метаданных (content.jar) и подстановки в информацию в нижней части файла content.xml с использованием сценария ant (см. Цель «add.associate.sites» ниже). ) и список сайтов, которые будут добавлены :
Таким образом, теперь вместо того, чтобы предлагать пользователям добавлять несколько сайтов обновлений для устранения отсутствующих потенциально зависимостей при установке, мы можем автоматически добавлять эти дополнительные сайты одновременно с добавлением единого URL-адреса для JBoss Tools. Теперь дополнительные сайты должны быть перечислены только для справки , но никаких дополнительных усилий со стороны пользователя не требуется.
BONUS HACK : чтобы снова добавить сайт, который уже может быть в списке (но отключен), и на этот раз он обязательно будет включен, вы можете добавить дополнительную косую черту в URL. Таким образом, http://download.eclipse.org/birt/update-site/2.6 становится http://download.eclipse.org//birt/update-site/2.6/ , и когда p2 видит новый сайт, он добавляет новый сайт (вместо того, чтобы игнорировать его, потому что он уже присутствует, но отключен. Опять победа.
В качестве альтернативы, вы можете разыграть тайное заклинание, используя файл p2.inf в корневой папке вашей функции или папку META-INF / плагина, чтобы добавить эти дополнительные обязательные сайты … или выполнить любую необходимую вам обработку . Я не уверен, поддерживает ли Tycho это, или насколько полно PDE поддерживает чтение этой информации. Есть образец кода? Отправьте это мне как комментарий ниже или через твиттер на @nickboldt . Благодаря!
В четвертой части я немного расскажу о том, как предотвратить сборку вашего продукта из неофициальных источников, и предварительно загрузлю ваш продукт официальными сайтами, с которых можно получать обновления. Потому что важно сбалансировать простоту использования с предотвращением неподдерживаемых функций. SPOILER ALERT : может содержать p2.inf инструкции.
От http://divby0.blogspot.com/2011/02/simplifying-p2-process-part-3-associate.html