
高速で再現可能なEclipse IDEプロビジョニングをビルド成果物として実現するGradleプラグイン。OSGi、p2、RCPビルドをサポート。
Goomph: ビルド成果物としてのIDESWT、OSGi、p2、Eclipse RCPを扱うためのプラグインでもあります
Eclipse IDEの複数のインストール環境で、"bundlepool"と呼ばれる共通のインストール済み成果物セットを共有することが可能です。つまり、手元のプロジェクトに適したすべてのプラグインと設定があらかじめ構成された、各プロジェクト専用のIDEを迅速かつ効率的に入手できるということです。
gradlew ideを実行すると、必要な機能だけを備えたIDEがbuild/oomphIdeにビルド・ダウンロードされます。~/.goomphに共通の成果物がすべてキャッシュされていれば、約15秒と1MBのディスク容量で済みます。
apply plugin: 'com.diffplug.oomph.ide'
oomphIde {
repoEclipseLatest()
jdt {}
eclipseIni {
vmargs('-Xmx2g') // IDE can have up to 2 gigs of RAM
}
style {
classicTheme() // oldschool cool
niceText() // with nice fonts and visible whitespace
}
}
クイックスタートについてはプラグインのjavadocを、例やより詳細な情報についてはHOW_TO_AUTOMATE_IDE.mdを参照してください。
「ビルド成果物としてのIDE」を実装するために必要なツール群は、Eclipseプロジェクトファイルを操作し、EclipseプラグインやRCPアプリケーションを構築するために必要なツール群と同じであることがわかります。それがGoomphのもう一つの側面です。サンプルプロジェクトについては、Gradle and Eclipse RCP talkを参照してください。
Goomphで構築された実際のEclipseソフトウェア:
以下はGoomphの機能一覧と、使用例が見つかるjavadocへのリンクです。
com.diffplug.eclipse Eclipseプロジェクトファイルと、Eclipseバージョン対応のMaven Centralアーティファクト。apt は、Gradleのアノテーション処理で動作するようにEclipseプロジェクトを修正します。mavencentral は、Eclipseリリースから依存関係のJARを簡単に追加できるようにします。buildproperties は、build.propertiesを使用してGradleビルドを制御し、build.propertiesで指定されたバイナリアセットをEclipseプロジェクトのクラスパスに含めるように修正します。excludebuildfolder は、EclipseのリソースインデックスからGradleのbuildフォルダを除外します。projectdeps は、ワークスペース内の他のプロジェクトへの依存関係がEclipse内で常に正しく解決されるとは限らないという断続的な問題を修正します。resourcefilters は、Eclipseプロジェクトにリソースフィルタを追加します。com.diffplug.osgi OSGiを扱うためのプラグイン。bndmanifest は、純粋にbndを使用してマニフェストを生成し、IDEが利用できるように出力します。equinoxlaunch は、コードジェネレータなどのEquinoxアプリケーションをビルドの一部として構成・実行できます。OsgiExecable は、OSGiコンテナ内でコードの一部を実行し、その結果をコンテナの外部から取得することを容易にします。com.diffplug.p2 p2データを操作するためのモデルとプラグイン。asmaven は、p2リポジトリから依存関係をダウンロードし、ローカルのMavenリポジトリで利用できるようにします。P2Model は、p2リポジトリとIUのセットをモデル化し、これらに対してp2-directorまたはp2.mirrorのantタスクを実行するための便利なメソッドを提供します。P2AntRunner は、Eclipseのantタスクを実行します。CategoryPublisher は、CategoryPublisher Eclipseアプリケーションをモデル化します。FeaturesAndBundlesPublisher は、FeaturesAndBundlesPublisher Eclipseアプリケーションをモデル化します。Repo2Runnable は、Repo2Runnable Eclipseアプリケーションをモデル化します。com.diffplug.gradle.pde ダウンロードしたEclipseインスタンスを使用してEclipse PDEを実行するためのタスク。PdeBuildTask は、PDEビルドを実行してRCP製品を構築します。PdeAntBuildTask は、antファイル上でPDEを実行します。com.diffplug.gradle その他のインフラストラクチャ。CmdLineTask は、一連のシェルコマンドを実行し、その間にファイルのコピーや移動を行うこともできます。JavaExecable は、別のJVMでコードの一部を実行し、その結果を元のJVMに戻すことを容易にします。JavaExecWinFriendly は、Windowsのコマンドライン長と長いクラスパスの制限を克服します。com.diffplug.gradle.eclipserunner ヘッドレスEclipseアプリケーションを実行するためのインフラストラクチャ。