読者です 読者をやめる 読者になる 読者になる

gradleでeclipseプラグインプロジェクトのビルドを実行する

当初の目的だったeclipseプラグインのビルドを実行が出来たので書いておく。ただし、とりあえず出来るレベルなのであまり参考にならないかもしれない。

サンプル用のeclipse pluginプロジェクトの作成

  1. Package Explorerを右クリックして、New->Others...でnewウィザードを開く
  2. Plug-in Projectを選択
  3. ウィザードの最後にテンプレートを選択するページがあるので、ここで"Hello, World"を指定する

このプラグインはメニューバーにSample Menuを表示するだけの単純なプラグインだ。これをgradleでビルドする。

フィーチャーの追加とbuild.gradleの作成

  1. まずはgradleのプロジェクトに変換する。Project Explorerで右クリックしてConfigure->Convert to Gradle Projectをクリック
  2. build.gradleファイルをプロジェクト直下に作成する
  3. build.gradleをエディタで開き、javaeclipseのプラグインをapplyする。

build.gradle

apply plugin: 'java'
apply plugin: 'eclipse'

依存関係の解決

まずは依存しているjarをdependenciesに追加する。eclipseプラグイン開発をする場合、MANIFEST.MFに書かれているRequired Plug-inがそれに相当する。とりあえずorg.eclipse.ui等の必須プラグインはeclipse本体と同じ階層にあるpluginsフォルダに格納されているので、それを探しに行くように設定する。

f:id:mi_kami:20130625014844p:plain

build.gradle

dependencies {
	compile fileTree(dir: '/Users/mikamikuh/project/Scala/eclipse_scala_ide_dev/plugins/', include: '*.jar')
}

リソースの追加

これでビルドは出来るが、これだけだとjarにplugin.xmlやMANIFEST.MF等の必要なが含まれない。gradleではsrc/main/resourcesの配下に置いたファイルはすべてjarに追加されるが、これらのファイルを移動すると後々面倒なので追加するリソースを指定する。

build.gradle

sourceSets {
	main {
		java { srcDirs 'src' }
		resources {
			include "META-INF/*", "plugin.xml"
		}
	}
}

ビルドの実行

 $ gradle -q assemble
[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks: 
[sts]      :assemble
[sts] -----------------------------------------------------
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE

BUILD SUCCESSFUL

Total time: 4.805 secs
[sts] -----------------------------------------------------
[sts] Build finished succesfully!
[sts] Time taken: 0 min, 4 sec
[sts] -----------------------------------------------------

課題

以下の書き方が知りたい...。

  • 依存関係をMANIFEST.MFから自動で取得する
  • build.propertiesからjarに含む/含まないリソースを取得