プロジェクトレイアウト

ここに、Tapestryを使用するプロジェクトのレイアウトを提案します: それは、Tapestry Quickstart Archetype によって作成されたフォルダとファイルのレイアウトです。 Antを使ってビルドする場合、全てのものがWAR内の適切な場所にパッケージされるようにさえしていれば、どんなやり方をすることもできます。

このプロジェクトレイアウトは、WARをバラしたもの (WARファイルをファイルシステム上に展開したもの)を模しています。 これによりワークスペースから直接アプリケーションを起動できるようになり、 開発中にはわざわざビルドしたりパッケージングの処理を行う必要がなくなります。 主要なIDEにはこのタスクを行うためのプラグインがあります ... そしてそれは、(ライブクラスリロードと相まって) Tapestryを使用した開発作業を容易にする要素のひとつです。

以下にサンプルプロジェクトを示します。ルートパッケージは com.example.myapp です:

Project Layout

メインソースファイル

メインJavaソースファイルは src/main/java に配置します。これはコンパイルされてWARファイルにパッケージされます。 ここにあるのはJavaのソースファイル だけ です。pages サブパッケージ内にソースファイル Start.java があり、 components サブパッケージ内にソースファイル Layout.java があります。 いま挙げたパッケージ名は、コンポーネントクラスで規定されている命名規約であり、必須です。

コンパイルされたJavaクラスはWAR内の WEB-INF/classes フォルダにパッケージされます。

クラスパスリソース

リソースファイルは src/main/resources 以下に配置します。 ここには、Startページのメッセージカタログ(Start.properties)があり、 Layoutコンポーネントのコンポーネントテンプレート(Layout.tml)とそのメッセージカタログ(Layout.properties)があります。 これらのファイルもWAR内の WEB-INF/classes フォルダにパッケージされます。

コンポーネントテンプレートは常にこのリソースフォルダに配置します。 ページテンプレートは src/main/webapp に配置することもできます。 (訳注: 原文は Templates for pages may be packaged in the WAR proper instead.)

コンテキストリソース

WARは主に src/main/webapp フォルダからビルドされます; ここは(画像やスタイルシートなどの)ただのファイルを配置する場所です。 ページテンプレート(Start.tml)はここに配置することもできます(訳注: リソースフォルダに配置することもできます)。 src/main/webapp/WEB-INF/web.xml ファイルはサーブレットコンテナの配備記述子で、Tapestry用の特別な設定を含んでいます。

コンパイルされたクラスとリソースをWARの WEB-INF/classes フォルダに配置し、 Tapestryライブラリやその依存ライブラリ(及びアプリケーションが依存しているその他のライブラリ)を WEB-INF/lib フォルダに配置するのは ビルドツール(通常はMaven)の役割です。

テスト

src/test/java フォルダと src/test/resources フォルダはテストの際にコンパイルされ実行されます。 これらのフォルダ内のファイルはWARには パッケージされません