SWTを使用したMaven Tycho-P2-Pluginの使用
質問
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
. 。 packaging
は eclipse-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を通常の依存関係としてインポートして、アプリをそのように構築できます...