7

EclipseP2リポジトリとMaventycho-p2-pluginを使用してSWTアプリケーションを構築するにはどうすればよいですか?

4

3 に答える 3

5

'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"/>
于 2011-11-02T09:12:09.270 に答える
2

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

ただし、プラグインやRCPアプリケーションをビルドする必要がない場合は、tychoは必要ないと思います。SWTを通常のMaven依存関係としてインポートし、その方法でアプリをビルドできます...

于 2011-11-01T10:54:35.067 に答える
2

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

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

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

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

たとえば、ターゲット定義ファイルでターゲット環境(Linux / Windows / Mac、x86 / x86_64、win32 / cocoa / gtk)を定義する必要があります。何も指定しない場合、Eclipseは現在のプラットフォームを使用します。「*」を使用すると、すべてのSWTフラグメントが省略されます。

plugins/つまり、エクスポートにはすべてのSWTフラグメント(フォルダー内に30個のプラグイン)が含まれます。これらはに記載されてcontents.jar いますがartifact.jar、現在のプラットフォーム(つまり、バンドルとソース)に一致する単一のSWTフラグメントのみがリストされます。

これはTychoにとって十分ではありません。

解決策:次の小さなスクリプトを使用して、適切な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インストール内でこれを実行します。

于 2011-11-02T14:37:22.193 に答える