

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# プロジェクトフォルダーを構築する
<a name="java-tomcat-platform-directorystructure"></a>

Tomcat サーバーにデプロイされた場合に機能するように、コンパイルされた Java プラットフォーム Enterprise Edition (*Java EE*) ウェブアプリケーションアーカイブ (WAR ファイル) は、特定の[ガイドライン](https://docs.oracle.com/javaee/7/tutorial/packaging003.htm)に従って構築される必要があります。プロジェクトのディレクトリが同じ基準を満たす必要はありませんが、同じ方法でプロジェクトのディレクトリを構築し、コンパイルやパッケージングを簡素化することが推奨されます。WAR ファイルコンテンツなどのプロジェクトフォルダを構築すると、ファイルがどのように関連付けられていて、ウェブサーバーでどのように動作するかを理解するのにも役立ちます。

次の推奨階層では、ウェブアプリケーションのソースコードは、[`src`] ディレクトリに配置され、構築スクリプトや構築スクリプトが生成する WAR ファイルから隔離されます。

```
~/workspace/my-app/
|-- build.sh            - Build script that compiles classes and creates a WAR
|-- README.MD           - Readme file with information about your project, notes
|-- ROOT.war            - Source bundle artifact created by build.sh
`-- src                 - Source code folder
    |-- WEB-INF         - Folder for private supporting files
    |   |-- classes     - Compiled classes
    |   |-- lib         - JAR libraries
    |   |-- tags        - Tag files
    |   |-- tlds        - Tag Library Descriptor files
    |   `-- web.xml     - Deployment Descriptor
    |-- com             - Uncompiled classes
    |-- css             - Style sheets
    |-- images          - Image files
    |-- js              - JavaScript files
    `-- default.jsp     - JSP (JavaServer Pages) webpage
```

[`src`] フォルダの内容は、サーバーにパッケージングしてデプロイする内容と一致します（[`com`] フォルダは例外です）。`com` フォルダには、コンパイルされていないクラス (`.java` ファイル) が含まれます。これらをコンパイルし、アプリケーションコードからアクセスできるように `WEB-INF/classes` ディレクトリに配置する必要があります。

`WEB-INF` ディレクトリには、ウェブサーバー上でパブリックに動作しないコードや設定が含まれます。ソースディレクトリのルートの他のフォルダ (`css`、`images`、`js`) はウェブサーバー上の対応するパスで一般公開されます。

次の例は、前述のプロジェクトディレクトリと同一ですが、ファイルとサブディレクトリの数が多い点のみが異なります。このプロジェクト例には、シンプルなタグ、モデル、サポートクラス、さらに `record` リソースのための Java サーバーページ（JSP）が含まれます。さらに、[Bootstrap](http://getbootstrap.com/) 用のスタイルシートと JavaScript、デフォルトの JSP ファイル、および 404 エラーのエラーページが含まれます。

[`WEB-INF/lib`] には、PostgreSQL の Java Database Connectivity(JDBC) ドライバを含む Java アーカイブ (JAR) ファイルが含まれます。クラスファイルがまだコンパイルされていないため、[`WEB-INF/classes`] は空です。

```
~/workspace/my-app/
|-- build.sh
|-- README.MD
|-- ROOT.war
`-- src
    |-- WEB-INF
    |   |-- classes
    |   |-- lib
    |   |   `-- postgresql-9.4-1201.jdbc4.jar
    |   |-- tags
    |   |   `-- header.tag
    |   |-- tlds
    |   |   `-- records.tld
    |   `-- web.xml
    |-- com
    |   `-- myapp
    |       |-- model
    |       |   `-- Record.java
    |       `-- web
    |           `-- ListRecords.java
    |-- css
    |   |-- bootstrap.min.css
    |   `-- myapp.css
    |-- images
    |   `-- myapp.png
    |-- js
    |   `-- bootstrap.min.js
    |-- 404.jsp
    |-- default.jsp
    `-- records.jsp
```

## シェルスクリプトを使用して WAR ファイルを構築する
<a name="java-tomcat-platform-directorystructure-building"></a>

[`build.sh`] は、Java クラスをコンパイルする非常にシンプルなシェルスクリプトです。また、WAR ファイルを構築してローカルテストのために Tomcat の [`webapps`] ディレクトリにコピーします。

```
cd src
javac -d WEB-INF/classes com/myapp/model/Record.java
javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/model/Record.java
javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/web/ListRecords.java

jar -cvf ROOT.war *.jsp images css js WEB-INF
cp ROOT.war /Library/Tomcat/webapps
mv ROOT.war ../
```

WAR ファイルでは、前述の例の [`src`] ディレクトリ ([`src/com`] フォルダを除きます) に存在する同じストラクチャを探します。`jar` コマンドは自動的に `META-INF/MANIFEST.MF` ファイルを作成します。

```
~/workspace/my-app/ROOT.war
|-- META-INF
|   `-- MANIFEST.MF
|-- WEB-INF
|   |-- classes
|   |   `-- com
|   |       `-- myapp
|   |           |-- model
|   |           |   `-- Records.class
|   |           `-- web
|   |               `-- ListRecords.class
|   |-- lib
|   |   `-- postgresql-9.4-1201.jdbc4.jar
|   |-- tags
|   |   `-- header.tag
|   |-- tlds
|   |   `-- records.tld
|   `-- web.xml
|-- css
|   |-- bootstrap.min.css
|   `-- myapp.css
|-- images
|   `-- myapp.png
|-- js
|   `-- bootstrap.min.js
|-- 404.jsp
|-- default.jsp
`-- records.jsp
```

## `.gitignore` を使用する
<a name="java-tomcat-platform-gitignore"></a>

コンパイルされたクラスファイルと WAR ファイルが Git レポジトリにコミットされる、または Git コマンドの実行時にこれらのファイルに関するメッセージが表示されることを防ぐため、プロジェクトフォルダの `.gitignore` という名前のファイルに関連ファイルタイプを追加します。

**\$1/workspace/myapp/.gitignore**

```
*.zip
*.class
```