Решение для создания автономного «составного» сайта обновлений Eclipse с категориями - PullRequest
4 голосов
/ 21 января 2012

Это будет довольно длинный вопрос, так что терпите меня.Я ищу решение для создания пользовательских сайтов обновлений (или репозиториев p2) для использования в автономной среде разработки, имея в виду следующее:

  • Каждый сайт будет содержать смесьиз сторонних и пользовательских плагинов Eclipse.

  • Я хотел бы создать один сайт для конфигурации IDE.Например, разработчикам, использующим Helios, нужно только добавить 1 сайт обновлений, содержащий m2e, Subversive и CustomPluginA.Разработчики, использующие Flash Builder, могут добавить другой сайт, содержащий m2e и CustomPluginB.

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

  • Наши пользовательские плагины Eclipse в настоящее время создаются с Maven + Tycho для Jenkins.Если возможно, я бы хотел настроить сайты обновлений для автоматического создания также с Jenkins.Затем, если пользовательский плагин обновляется, он может запускать необходимые сборки сайтов обновлений.

  • Было бы неплохо создавать пользовательские категории на сайтах обновлений.

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

И, наконец, Какой самый простой способ определить, какие плагины и функции включены в сайт? В Eclipse я могусоздать проект сайта обновления, который делает редактирование очень простым, но я могу включить только те плагины, которые существуют в этой установке Eclipse.Ручное создание сценария site.xml или p2 ant решает эту проблему, но определение идентификаторов и версий устанавливаемых модулей вручную затруднено и подвержено ошибкам.

Спасибо, что нашли время, чтобы прочитать все это.Если кто-то действительно сможет решить все мои проблемы, это было бы удивительно, и мне, вероятно, пришлось бы добавить награду к этому вопросу.

1 Ответ

4 голосов
/ 21 января 2012

Я предложу два пути, один с Тихо и один с агрегатором B3.

1) Тихо :

Шаг 1. : определите целевую платформу с помощью встроенных инструментов PDE, которая использует существующие локальные сайты обновлений, и сохраните ее в виде файла .target. Затем вы можете ссылаться на этот файл в вашей сборке следующим образом:

<plugin>
  <groupId>org.eclipse.tycho</groupId>
  <artifactId>target-platform-configuration</artifactId>
  <version>${tycho.version}</version> <configuration>
  <resolver>p2</resolver>
   <target>
     <artifact>
      <groupId>org.eclipse.viatra2</groupId>
      <artifactId>«project name where the target file resides»</artifactId>
      <version>«artifact version»</version>
      <classifier>«target filename without extension»</classifier>
     </artifact>
   </target>
   <ignoreTychoRepositories>true</ignoreTychoRepositories>
  </configuration>
 </plugin>

Шаг 2. : Определить новый проект как сайт обновлений. Проект должен содержать файл category.xml, ссылающийся на используемые версии используемых функций целевой платформы из предыдущего шага. Вы можете создать этот файл category.xml с помощью мастера / редактора определения категории PDE.

Шаг 3. : просто опубликуйте свою сборку, используя архетип сайта обновлений:

<packaging>eclipse-repository</packaging>
<build>
  <plugins>
    <plugin>
      <groupId>org.eclipse.tycho</groupId>
      <artifactId>tycho-p2-publisher-plugin</artifactId>
      <version>${tycho.version}</version>
      <configuration>
        <publishArtifacts>true</publishArtifacts>
      </configuration>
    </plugin>
  </plugins>
</build>

2) B3 Агрегатор:

Проект Eclipse B3 содержит функцию агрегатора . Используя Агрегатор, вы определяете модель, которая использует существующие сайты обновлений, затем просто выполняете эту модель с помощью Агрегатора, и в результате получается сайт обновлений. В последнем случае вы можете либо создать составной сайт обновлений, который ссылается на другие сайты обновлений, либо создать автономную копию из исходных данных. В руководстве приведен простой пример, он прост в использовании.

3) Сравнение

Определение логики зеркалирования более простое в B3, поскольку модель содержит только описание зеркалирования, а также позволяет создавать составные сайты обновлений, которые ссылаются только на существующие сайты. Однако, если вы хотите сделать что-то еще, кроме обновления сайта, то это сделать сложнее. Кроме того, он может быть выполнен в сборках без головы (например, от Jenkins), но для этого требуется установка экземпляра Eclipse без головы. Документация содержит подробности, но инструмент не является автономным, как в случае Maven / Tycho.

В случае Tycho сложнее увидеть структуру результирующего сайта обновлений, однако полученная сборка является более расширяемой (например, вы можете просто добавить свои собственные функции, используя тот же тип сборки), и выполнить сборку вам нужен только Maven.

Итак, оба инструмента могут соответствовать вашим потребностям - вам нужно оценить их сильные и слабые стороны в вашем случае.

...