📘 Vol.19：掲示板アプリ v2 Mavenプロジェクトの新規作成手順

>※本記事は、Vol.18「掲示板アプリ v2 の動作環境と使用ライブラリの整理」の続編として、EclipseでのMavenプロジェクトの作成手順をまとめたものです

### 🎯 本記事の目的
本記事では、***掲示板アプリ v2 の開発を開始するにあたっての Eclipse での Maven プロジェクト作成手順***を、図付きで解説します。

本シリーズでは、Vol.18で動作環境や使用ライブラリを整理しましたが、いよいよこの手順で***開発用のプロジェクトベース***を作成し、アプリ実装を開始していきます。

### 📝 前提知識
MavenやStruts2に関する基礎知識は、以下の記事をご参照ください。

- 📘 [Vol.4：Struts2とMavenの基礎と設定ファイルの役割](https://qiita.com/juehara-crypto/items/e37fa1879ae996bee73e)

- 📘 [Vol.5：環境構築編：掲示板アプリケーションの実行準備](https://qiita.com/juehara-crypto/items/7010ae45d35174d3a3a6)

### ✅ 手順概要

| 手順 | 内容                             |
| -- | ------------------------------ |
| ①  | EclipseでMavenプロジェクトを新規作成       |
| ②  |「ウィザードの選択」から Maven プロジェクトを選ぶ  |
| ③  | 「新規 Maven プロジェクト」ウィンドウ      |
| ④  |  アーキタイプの選択  |
| ⑤  |  プロジェクト情報の入力 |
| ⑥  |  コンソールでの確認メッセージを入力 |
| ⑦  |  プロジェクトが作成されたことを確認 |

### 🧭 Step-by-Step 解説

### ① Eclipseで新規Mavenプロジェクトを作成

- メニュー「ファイル」→「新規(N)」→「その他(O)」をクリック
![画面項目.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091065/18093c05-b2f3-441f-afd7-672e3b47d7c0.png)


### ② 「ウィザードの選択」から Maven プロジェクトを選ぶ
- 「Maven」→「Maven プロジェクト」を選択し、「次へ(N)>」をクリック
![画面項目2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091065/b68f55be-7121-4ac2-b066-210d727bef0b.png)


### ③ 「新規 Maven プロジェクト」ウィンドウ
- 「デフォルト・ワークスペース・ロケーションの使用」にチェックが入っていることを確認し、「次へ(N)>」

![画面項目3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091065/5c090ec1-0714-41ef-98f9-c63497f8820a.png)


### ④ アーキタイプの選択
- 「フィルター」に **`maven-archetype-webapp`** と入力して検索

- 一覧から **`org.apache.maven.archetypes:maven-archetype-webapp`** を選択し、「次へ(N)>」

![画面項目4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091065/6d8a9e98-e1fa-4b2f-9ce3-627021aac081.png)


### ⑤ プロジェクト情報の入力
以下を入力します：

| 項目          | 入力値                         |
| ----------- | --------------------------- |
| Group Id    | com.company.bulletinboardv2 |
| Artifact Id | Bulletinboardv2             |
| Version     | 0.0.1-SNAPSHOT（初期値のままでOK）   |
| Package     | com.company.bulletinboardv2 |

→ 入力後「完了」ボタンをクリック

![画面項目5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091065/e49470c8-323e-493d-b289-da5ac868ab46.png)


### ⑥ コンソールでの確認メッセージ
- Y: と表示されたらキーボードで **`y を入力して Enter キー`** を押します。

![画面項目7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091065/3a0de1db-595d-4ab8-9791-e25ea7cc0048.png)

### ⑦ プロジェクトが作成されたことを確認
- Eclipse の「プロジェクト・エクスプローラー」に **`Bulletinboardv2`** が表示されていれば成功です

![画面項目8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4091065/1a02d438-afc0-498c-a77c-6199281afb3a.png)

---

### 🔧 おすすめの初期フォルダ構成整備手順（ビルドパスエラー解消）

❓ なぜビルド・パスエラーが出るの？
`maven-archetype-webapp` は最小限の構成で作成されるため、以下のフォルダが自動で作成されません：

- src/main/java

- src/main/resources

- src/test/java

- src/test/resources

そのため Eclipse では「ビルド・パスが欠落している」と表示されます。

---

### ✅ 解消方法：空のフォルダを作成する
- プロジェクトに以下のフォルダを手動で追加してください：

```text
Bulletinboardv2/
├── src/
│   ├── main/
│   │   ├── java/               ← Java ソースコード用
│   │   └── resources/          ← 設定ファイルなど
│   └── test/
│       ├── java/               ← 単体テスト用
│       └── resources/          ← テスト設定ファイル
```

> ※ フォルダは空のままでOK。これだけで Eclipse のビルドパスエラーが解消されます。

---

### 📁 最終的なフォルダ構成の例
```text
Bulletinboardv2/
├── pom.xml                         ← Maven設定ファイル
├── src/
│   ├── main/
│   │   ├── java/                  ← ← Javaソースコード用
│   │   ├── resources/            ← ← 設定ファイルなど
│   │   └── webapp/
│   │       └── WEB-INF/
│   │           └── web.xml       ← ← Webアプリ設定
│   └── test/
│       ├── java/                 ← ← テストコード
│       └── resources/           ← ← テスト設定ファイル
└── target/                        ← ビルド成果物出力
```

---

### 🔄 補足：pom.xml の場所について
- pom.xml は プロジェクト直下（Bulletinboardv2/） に正しく生成されていれば OK

- 誤って target/ フォルダ内にある場合は、Maven プロジェクトとして認識されません

---

### 🎉 まとめ
- `maven-archetype-webapp` では必要最小限の構成しか作成されない

- 開発を始める前に、Java・Resource・Test系のフォルダを手動で作成しておくのがベスト

- Eclipse で「ビルド・パスの欠落」が出ても焦らず、空のフォルダを追加すれば解消できる

---

### ✅今後の予定

| Vol.       | タイトル案                          | 内容                                                                   |
| ---------- | ------------------------------ | -------------------------------------------------------------------- |
| **Vol.20** | 🔄 pom.xmlの依存ライブラリの自動解決設定      | EclipseのMavenプロジェクトでpom.xmlの依存関係を自動解決させる方法（Maven → Update Projectなど） |
| **Vol.21** | 共通基底クラス `BaseAction` の作成       | Struts2 のすべてのアクションで共通化される処理（セッション取得・ログ出力など）をまとめる                     |
| **Vol.22** | ログイン機能①：web.xmlの作成とStruts2起動確認 | `web.xml` の役割、Struts2フィルタの設定、起点としての重要性と動作確認                          |
| **Vol.23** | ログイン機能②：JSP画面の作成（ログインフォーム）     | `/WEB-INF/jsp/login.jsp` の作成、フォームタグの使用、Struts連携確認                    |
| **Vol.24** | ログイン機能③：struts.xmlのルーティング設定    | `struts.xml` におけるアクションマッピングの基本とログイン機能の設定                             |
| **Vol.25** | ログイン機能④：LoginActionクラスの作成      | ユーザーID・パスワードの受け取り／認証処理との接続／BaseAction継承の活用                           |
| **Vol.26** | ログイン機能⑤：DB接続クラスとDAO層の作成        | JDBCもしくはMyBatisの設定／`UserDao`の骨組み／テスト接続確認                             |
| **Vol.27** | ログイン機能⑥：DB準備（テーブル作成）           | ログイン用のユーザーテーブルを作成し、初期データ挿入まで                                         |
| **Vol.28** | ログイン機能⑦：ユーザー認証処理の実装            | DAOで取得したユーザー情報を用いてログイン成功・失敗の分岐を作成                                    |
| **Vol.29** | ログイン機能⑧：管理者ポータル画面の作成と遷移        | ログイン成功後に「管理者ポータル画面」に遷移／各管理機能（掲示板・ユーザー・スレッド・投稿）へのリンク設置                |
| **Vol.30** | 管理機能①：掲示板管理画面の一覧表示の実装          | 既存の掲示板データを管理者画面に一覧表示する／DAO・JSP連携の確認                                  |
| **Vol.31** | 管理機能②：掲示板作成機能の実装               | 掲示板作成フォームの作成／作成後に一覧に戻る処理の流れ／バリデーション準備                                |
| **Vol.32** | 管理機能③：掲示板編集機能の実装               | 編集対象掲示板の選択／情報の取得と更新／セッション引き継ぎとJSP反映                                  |
| **Vol.33** | 管理機能④：掲示板削除機能の実装               | 削除ボタンの配置／アクション・DAOによる物理削除処理と画面更新                                     |
| **Vol.34** | 管理機能⑤：ユーザー管理画面の一覧表示の実装         | 登録ユーザーを一覧表示／ユーザー編集・削除への遷移ボタン設置                                       |
| **Vol.35** | 管理機能⑥：ユーザー作成機能の実装              | 新規ユーザー追加フォーム／パスワード・権限などのバリデーション                                      |
| **Vol.36** | 管理機能⑦：ユーザー編集・削除機能の実装           | ユーザー情報の更新／削除による整合性チェックと処理                                            |
| **Vol.37** | 管理機能⑧：スレッド管理画面の一覧表示と削除機能       | 掲示板ごとのスレッド表示と削除（掲示板IDでの紐づけ確認）                                        |
| **Vol.38** | 管理機能⑨：投稿管理画面の一覧表示と削除機能         | 各スレッドに紐づく投稿を一覧で表示／不適切投稿の削除処理                                         |
| **Vol.39** | ログイン機能⑨：JSP表示にユーザー名を連携         | セッションから取得し、画面上にユーザー名を表示する方法の実装                                       |
| **Vol.40** | ログイン機能⑩：軽微なユニットテストとデバッグ活用      | EclipseのJUnit／デバッグビューの使い方／ログ確認方法                                     |
| **Vol.41** | 今後の拡張方針：一般ユーザーポータルと投稿機能の導入へ    | 一般ユーザー向け機能へと発展／掲示板閲覧→スレッド作成→投稿までの基本設計                                |