質問

Eclipse P2リポジトリとMaven Tycho-P2-Pluginを使用してSWTアプリケーションを構築するにはどうすればよいですか?

役に立ちましたか?

解決

「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"/>

他のヒント

問題を見つけました。背景:XTEXTがDSLS用に生成するエディタープラグインを構築しています。

プラグインはに依存します org.eclipse.swt;version=3.7.0. 。 packagingeclipse-plugin. 。私は 私の親pomに必要なすべての環境をリストします.

P2リポジトリは、ターゲット定義(*.targetファイル)をエクスポートすることで埋めるハードディスクのローカルミラーです。

問題は、ターゲット定義をエクスポートすると、P2リポジトリのように見えるものが作成されますが、微妙な違いがあることです。

たとえば、ターゲット環境(Linux/Windows/Mac、x86/x86_64、win32/cocoa/gtk)をターゲット定義ファイルに定義する必要があります。何も指定しない場合、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インストール内でこれを実行します。

Tychoを使用すると、プラグイン、機能、RCPアプリケーションなど、Eclipseベースのものを構築およびコンパイルできます。公式プロジェクトページにはたくさんの優れたチュートリアルがありますが、私の場合はサンプルプロジェクトを使用しました( http://git.eclipse.org/c/tycho/org.eclipse.tycho-demo.git/tree/itp04-rcp ).

ただし、プラグインやRCPアプリケーションを構築する必要がない場合は、Tychoは必要ないと思います。SWTを通常の依存関係としてインポートして、アプリをそのように構築できます...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top