gwtプラグインの使い方
gwt用のプラグインを作ってる人がいる。
2015/8時点での最新安定版は0.6のようだ。
GWT、Eclipse用GWTプラグイン、Gradle、Eclipse用Gradleプラグインはインストール済との前提で、gwt-gradle-pluginを使用する方法を以下に記述する。
Eclipseプロジェクトの作成
GWTプロジェクトの作成
EclipseのFileメニューからNew>Otherを選択、Google>Web Application Projectを選択。 プロジェクト名をsample、パッケージ名をjp.foobar.sample、Use Google Web Toolkitで2.6.1を指定、Use Google App EngineのチェックをOFFしてFinish。 Generate project sample codeはチェックしたまま。
webappフォルダの作成
EclipseのGWTプラグインはwarフォルダ下にウェブアプリケーション設定ファイルもコンパイルクラスもいっしょくたに置いてしまう。 これでは都合が悪いため、設定ファイル類はwebappというフォルダを作成してそこに置くことにする。
具体的には、warフォルダをコピーしてwebappという名前にし、classes, libフォルダを削除する。以下のような構造になる。
webapp +- WEB-INF | +- web.xml +- favicon.ico +- Sample.css +- Sample.html
Gradleプロジェクトへの変換とビルドスクリプトの作成
プロジェクト名を右クリックしてメニューからConfigure>Convert to Gradle Project。プロジェクト名を右クリックして、New>Fileでbuild.gradleを作成。
※CENTRAL_REPOSITORYプロパティはあらかじめ定義されていること。
// gwt-gradleプラグインのロード指定 buildscript { repositories { maven { url CENTRAL_REPOSITORY } } dependencies { classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6' } } apply plugin: 'war' apply plugin: 'gwt' apply plugin: 'java' apply plugin: 'jetty' // 一般のライブラリの取得先指定 repositories { maven { url CENTRAL_REPOSITORY } } // ウェブアプリ設定ファイルのあるフォルダ webAppDirName = 'webapp' // GWTの設定 gwt { gwtVersion='2.6.1' modules 'jp.foobar.sample.sample' // GWTコンパイラがメモリ不足になるときに指定。gwtc呼び出し時のvm引数になる minHeapSize = "512M"; maxHeapSize = "1024M"; sourceSets { main { java { srcDir 'src' } } } // jettyで実行する場合の使用ポート jettyRunWar.httpPort = 8089 }
ビルド・実行
build.gradleを右クリックして、Gradle GUIを選択し、Task Treeタブからcleanをダブルクリックした後にjettyRunWarをダブルクリックすれば、ビルドの後にjetty上で実行される。 あとは、「http://localhost:8089/sample」にアクセスすればこのウェブアプリが表示される。
※参考 http://steffenschaefer.github.io/gwt-gradle-plugin/doc/latest/plugin_design
Eclipseのパスの設定
gradleプロジェクトに変換した時点で、プロジェクトのjava Build Pathのソースもライブラリも空になっているので、以下を行って再設定する。 プロジェクトを右クリックし、Gradle>Refresh Dependencies及びGradle>Refresh SourceFolders。
build.gradleを右クリックして、Gradle GUIを選択し、Task Treeタブからcleanをダブルクリックした後にwarをダブルクリック。
マルチモジュールの場合
先の例はgwtのモジュールが一つの場合であったが、複数モジュールの場合はどうなるか。 おそらくマルチプロジェクトにするしか無いものと思われる。
gwtというコンフィギュレーションがプロジェクトに一つしか持てないため、一つのプロジェクトでは一つのモジュールしか作成できないものと思われる。