Использование Maven Tycho-P2-плагин с SWT - PullRequest
6 голосов
/ 27 июня 2010

Как мне создать приложение SWT, используя репозиторий Eclipse P2 и подключаемый модуль Maven tycho-p2?

Ответы [ 3 ]

4 голосов
/ 02 ноября 2011

Вы можете определить целевые среды для плагина 'target-platform-configuration'.Что бы вы ни создавали, RCP или функции для нескольких сред, вы можете позволить своей функции включать фрагменты SWT для этих хостов.

        <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</arch>
                    </environment>
                    <environment>
                        <os>win32</os>
                        <ws>win32</ws>
                        <arch>x86</arch>
                    </environment>
                    <environment>
                        <os>solaris</os>
                        <ws>gtk</ws>
                        <arch>sparc</arch>
                    </environment>
                </environments>
            </configuration>
        </plugin>

Фрагмент в файле feature.xml

   <plugin
         id="org.eclipse.swt"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.swt.gtk.linux.x86"
         os="linux"
         ws="gtk"
         arch="x86"
         download-size="0"
         install-size="0"
         version="0.0.0"
         fragment="true"
         unpack="false"/>

   <plugin
         id="org.eclipse.swt.win32.win32.x86"
         os="win32"
         ws="win32"
         arch="x86"
         download-size="0"
         install-size="0"
         version="0.0.0"
         fragment="true"
         unpack="false"/>
2 голосов
/ 02 ноября 2011

Я нашел проблему. Справочная информация: я создаю плагин редактора, который Xtext создает для DSL.

Плагин зависит от org.eclipse.swt;version=3.7.0. packaging - это eclipse-plugin. Я перечисляю все необходимые среды в родительском POM .

Репозиторий p2 - это локальное зеркало на моем жестком диске, которое я заполняю, экспортируя определение цели (* .target file).

Проблема в том, что экспорт определения цели создаст нечто, похожее на репозиторий p2, но с небольшими отличиями.

Например, вы должны определить целевую среду (Linux / Windows / Mac, x86 / x86_64, win32 / cocoa / gtk) в файле Target Definition. Если вы ничего не укажете, Eclipse будет использовать текущую платформу. Если вы используете «*», все фрагменты SWT будут опущены.

Это означает: экспорт содержит все фрагменты SWT (30 плагинов в папке plugins/), они упоминаются в contents.jar , но artifact.jar содержит только один фрагмент SWT, соответствующий вашему текущему платформа (то есть пакет плюс источники).

Этого недостаточно для Тихо.

Решение: создать правильный репозиторий p2, используя этот небольшой скрипт:

# Where you exported the Target Definition
dir="$HOME/3.7.1-from-target-platform"

# Where the result should be written. Must be != dir
dest="$HOME/3.7.1-from-target-platform-fixed"

# Make sure subsequent invocations don't try to merge old stuff
rm -rf "$dest"

# Prepend "file:" to create a URL from the path
dest="file:$dest"

echo "Merging $dir..."
./eclipse -nosplash \
    -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher \
    -metadataRepository "$dest" \
    -artifactRepository "$dest" \
    -repositoryName "3.7.1 Indigo Repository" \
    -source "$dir" \
    -compress -append -publishArtifacts

Запустите это внутри работающей установки Eclipse.

2 голосов
/ 01 ноября 2011

Tycho позволяет создавать и компилировать материалы, основанные на затмениях, включая плагины, функции и приложения RCP. На официальной странице проекта есть множество хороших учебников, но в моем случае я использовал пример проекта (http://git.eclipse.org/c/tycho/org.eclipse.tycho-demo.git/tree/itp04-rcp).

Однако, если вам не нужно создавать какие-либо плагины или приложение RCP, я думаю, вам не нужен tycho: вы можете просто импортировать SWT как обычную зависимость maven и построить свое приложение таким образом ...

...