Создайте кроссплатформенную версию Eclipse с помощью Maven Tycho

Я пытаюсь скомпилировать приложение Eclipse Indigo RCP с Maven и Tycho. Он отлично работает, если я просто соберу его для одной платформы, но если я попытаюсь собрать его для большего количества, сборка перестанет работать.

Проблема в том, что у меня есть плагины для конкретной платформы в моем файле продукта, который я хочу создать. Зависимости, такие как org.eclipse.swt.win32.win32.x86, которые являются плагинами фрагментов для org.eclipse.swt.
Когда я не добавляю в свой продукт фрагменты, специфичные для платформы, приложение не запускается, потому что нет библиотек платформы, таких как org.eclipse.swt.win32.win32.x86. В качестве репозитория Tycho мы используем клон сайта обновлений eclipse indigo, размещенный на нашем собственном сервере. Он включает в себя дельта-пакет. И когда я добавляю все фрагменты для всех платформ, сборка падает, и maven говорит мне, что фильтры платформы не совпадают, например, для сборки Linux.

Кто-нибудь знает, как это исправить?
Должен ли я добавлять эти зависящие от платформы вещи в свой продукт? Я предпочитаю не включать конкретные зависимости в свой продукт, верно?


person Cake42    schedule 21.11.2012    source источник
comment
Этот вопрос устарел. Описанная проблема возникает только в Tycho 0.15.0 и более ранних версиях.   -  person oberlies    schedule 17.11.2014


Ответы (2)


Похоже, у вас есть продукт на основе плагинов. В этом случае вам нужно будет вручную отредактировать файл .product и добавить фильтры платформы для этих плагинов. К сожалению, встроенный редактор продукта в eclipse не предоставляет эти значения. См. http://wiki.eclipse.org/Tycho/FAQ#How_to_build_plugin-based_products_with_platform-specific_fragments.3F

Для каждого плагина, например. org.eclipse.swt.win32.win32.x86 вам нужно будет добавить что-то вроде;

<plugin id="org.eclipse.swt.win32.win32.x86" fragment="true" ws="win32" os="win32" arch="x86"/>

Обратите внимание: если вы используете редактор продукта, он удалит эти значения.

Однако лучше использовать продукт, основанный на функциях. Редактор функций позволяет редактировать эти поля.

person Simon    schedule 21.11.2012
comment
Кажется, это больше не требуется в Tycho 0.16.0 (возможно, уже в 0.15.0) - person msteiger; 30.11.2012
comment
@msteiger: это правильно. Начиная с Tycho 0.16.0 вам больше не нужно вручную устанавливать атрибуты ws/os/arch в файле продукта — сборка Tycho автоматически устанавливает их для вас. - person oberlies; 17.11.2014

В блоге я нашел более простое решение: http://blog.sdruskat.net/building-a-cross-platform-feature-based-eclipse-rcp-product-with-tycho-the-сотый/

В родительском/главном файле pom.xml, чтобы использовать все плагины из p2, укажите следующее:

<build>
 <plugins>
  <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-maven-plugin</artifactId>
    <version>${tycho-version}</version>
    <extensions>true</extensions>
  </plugin>

  <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <version>${tycho-version}</version>
    <configuration>
       <resolver>p2</resolver>
        <environments>
          <environment>
            <os>linux</os>
            <ws>gtk</ws>
            <arch>x86_64</arch>
          </environment>
          <environment>
            <os>win32</os>
            <ws>win32</ws>
            <arch>x86_64</arch>
          </environment>
        </environments>
    </configuration>
  </plugin>
 </plugins>
</build>

Моя тайхо версия 0.21.0

person user1234    schedule 15.11.2014