Locked History Actions

gradle/gwt-plugin

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というコンフィギュレーションがプロジェクトに一つしか持てないため、一つのプロジェクトでは一つのモジュールしか作成できないものと思われる。

参考資料