ClientBundleのリソースはpublicディレクトリに配置できない

ClientBundleにアクセサを書く場合、通常はリソースのベース名と同じ名前で定義するが、違う名前のアクセサを定義したい場合は、@Sourceアノテーションを使用してリソースのファイル名を直接書くことができる。

@Source("splash.gif")
ImageResource splash();

また、この@Sourceアノテーション相対パスを許可しており(絶対パスは×)、モジュールルートからのパスを記述することもできる。

@Source("../client/css/splash.gif")
ImageResource splash();

相対パスを記述する場合、起点は<モジュール名>.gwt.xmlを配置しているパッケージ(ディレクトリである)

とこれは非常に便利なのだが、融通が効かない面もある。

例えば、"public" という名前のディレクトリは@Sourceアノテーションで指定することができず、コンパイルを待たずエラーになってしまう。

  • publicディレクトリは指定できない

この名前を持つディレクトリは静的なコンテンツを格納するためにGWTに予約されたディレクトリ名でありClientBundleの対象にできないようだ。