Spring Boot解説第8回(開発環境編：EclipseプロジェクトのGit管理)

こんにちは！
情創 技術開発局
最近打線を組むのがマイブームになりつつある@TEBASAKIです。
Amazonで野球盤を探してみたら5万円のものが見つかって驚きました。

今回はEclipseプロジェクトのGit管理を解説します。

# プロジェクトのフォルダ構成
プロジェクトのフォルダ構成は以下のようにします。

```text:フォルダ構成
src
  ┗ main
        ┣ java
        ┃    ┗ com
        ┃         ┗ qiita
        ┃                ┗ demo
        ┃                      ┣ dao(DB処理層)
        ┃                      ┃
        ┃                      ┣ domain(ドメインモデルを定義する層)
        ┃                      ┃      ┗ tbl(DB Bean)
        ┃                      ┃
        ┃                      ┣ config(Springの色々な設定をJavaコード上で行うファイル群)
        ┃                      ┃
        ┃                      ┣ service(トランザクション処理を管理する層)
        ┃                      ┃
        ┃                      ┣ web(WEB層-コントローラーを記載)
        ┃                      ┃   ┣ controller
        ┃                      ┃   ┃
        ┃                      ┃   ┗ form(画面 Bean)
        ┃                      ┃
        ┃                      ┗Application.java(エントリポイント)
        ┃
        ┗ resources
                   ┣ dao(MyBatisのxml格納)
                   ┃
                   ┣ META-INF
                   ┃       ┗ resources
                   ┃
                   ┣ public(共通のjsやcss)
                   ┃
                   ┣ static(静的ファイル)
                   ┃                  ┣ images(画像)
                   ┃                  ┃
                   ┃                  ┣ scripts(js)
                   ┃                  ┃
                   ┃                  ┣ styles(css)
                   ┃                  ┃
                   ┃                  ┗ (静的なHTMLファイル群)
                   ┃
                   ┗ templates(thymeleaf 拡張子html)
```

srcフォルダ以下の構成を記載しましたが、
そのほかのフォルダについては省略します。

# Gitへのソースアップ
プロジェクトをGitの管理下に置く方法を解説します。
なお、今回はEclipseのGitプラグイン(Egit)を使用しているため、
Git for Windowsを導入する必要はありません。
導入したい方は、[こちら](http://opcdiary.net/?page_id=27065 "私家版 Git For Windowsのインストール手順 | OPC Diary")のページが参考になります。

## 新規プロジェクトの作成
まずGit管理下に置くプロジェクトを作成します。
ファイル→新規→その他から、Gradle→Gradleプロジェクト(黄緑)を選択します。
Gradleプロジェクトの作成については[第2回](http://qiita.com/TEBASAKI/items/a30a7daf11cdb51272fb)で解説しているので、
今回は簡潔に説明します。
プロジェクト名は任意ですが、今回はわかりやすいように、
「gitgradle」にしておきます。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/ec66741e-79bf-51c7-29db-0f8ed2b4a792.png)

GradleディストリビューションにGradleラッパーを選択して、完了を押します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/d5b59ac4-03ad-d6ce-fd27-29ab8779fda7.png)
その後、プロジェクトを右クリック→構成→Gradleプロジェクトへ変換を選択します。

src以下にデフォルトで生成されているファイルをすべて削除し、
フォルダ構成の項目に記載したようにフォルダを作成します。
その後、第2回で作成したHelloWorldプロジェクトのソースを配置します。

build.gradleはプロジェクトフォルダ直下に、
Application.javaはdemoフォルダに、
HelloWorldController.javaはcontrollerフォルダにそれぞれ配置します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/d738282b-4664-8d0a-a6e2-65ba9b5dbc9a.png)

javaファイルはパッケージのパスを変更しておきます。
また、リフレッシュを行う前に、
gradle→wrapper→gradle-wrapper.propertiesの内容を、
使用するGradleのバージョンに変更しておきましょう。

ここまで行ったら、動作を確認します。
プロジェクトを右クリック→Gradle→すべてリフレッシュを行います。
その後、プロジェクトを右クリック→Gradle→タスク・クイック・ランチャーを起動し、
bootRunを記入して実行します。

http://localhost:8080 にアクセスして、
「Hello World!」が表示されたらOKです。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/b7bb8eff-6c4c-6b9c-1706-03f0e77099a4.png)


## ローカルリポジトリーの作成
プロジェクトを作成したら、
右クリック→チーム→プロジェクトの共用を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/70e534a8-5d74-e2a3-262e-2a9f13e757e6.png)

リポジトリー・タイプはGitを選び、次へ進みます。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/cb111d6d-2342-d45d-d976-1c6d741402e9.png)

プロジェクトの親フォルダー内のリポジトリーを使用または作成にチェックを入れ、
パスが表示されたらリポジトリーの作成を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/81b88f2b-caa0-25f4-cb38-7546829085ff.png)

## リソースファイルの表示
第3回でも説明しましたが、
ビューから除外する対象にリソースファイルが含まれていた場合は、
その設定を解除します。
方法については[こちら](http://qiita.com/YAKINIKU/items/6889c5438de48eb4e873#%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E9%99%A4%E5%A4%96%E8%A7%A3%E9%99%A4 "Spring Boot解説第3回(開発環境編：eclipseの設定)#リソースの除外解除")を参照してください。

## 管理対象外ファイルの設定
Gitの管理対象外とするファイルを設定します。
~~今回はプロジェクトフォルダ直下の、~~
~~**.classpath**を管理対象外とします。~~
※2016/05/31 .classpathなしではGitから取得した際に不具合が生じるようなので、
Gitの管理に加えます。

ファイルを選択し、右クリック→チーム→無視をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/4d9ecb41-ee52-1e54-f198-667b69911e1e.png)


## 空フォルダにダミーファイルを配置
ファイルを持たないフォルダはGitの管理対象外となってしまいます。
そこで、空フォルダにダミーファイルを配置することで、
疑似的に空フォルダを管理対象にします。
ダミーファイルは慣例的に**.gitkeep**というファイル名が使われることが多いので、
それに従っています。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/f178aead-0f2a-9e09-f744-fff6fddbc86b.png)

ログファイルを格納するフォルダなど、
フォルダのみを管理したい場合に便利です。

## ローカルリポジトリへコミット
設定が終わったらローカルリポジトリへコミットします。
プロジェクトを右クリック→チーム→コミットを選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/a4c6fa4c-83d7-091b-6769-70b80e25953a.png)

コミットメッセージを入力し、追加するファイルを選択して、
コミットを押します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/d32e092a-718d-11fe-5ad1-36261f2bf808.png)


## リモートリポジトリの作成
ソースをアップするためのリモートリポジトリを作成します。
まずGitのパースペクティブを開きます。
表示されていない場合は下図の赤丸で囲んだアイコンをクリックして、
Gitを選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/c8a9580d-c987-f539-8aca-6de8bb59079e.png)


パースペクティブを開いたら、
プロジェクトのリモートを右クリック→リモートの作成を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/84ead1a9-ec7e-e996-cd7b-db1b711c7722.png)


新規リモートの名前は「origin」に設定し、フェッチ構成にしてOKを押します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/26f3b5e0-1af2-7125-09ec-0777dc94ab52.png)

フェッチ構成のURIには、あらかじめ作成しておいた、
リモートリポジトリのURIを設定します。
Gitbucketによるリモートリポジトリの作成方法と、
URIの取得については、[こちら](http://seri.hatenablog.com/entry/2014/03/16/214202 "EclipseでGitHubとかGitBucketを使い始める方法 - White Box技術部")を参照してください。
URIを入力したら、保管とフェッチをクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/1919e15d-655e-0507-96c4-4235e35b48f8.png)


## ブランチの構成
リモートリポジトリを作成したら、
プロジェクト→ブランチ→ローカル→masterを右クリックし、
ブランチの構成を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/7615e85b-6a68-8db5-aa88-5088ce256404.png)

アップストリーム・ブランチに、
「refs/heads/master」と記入してOKを押します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/dc83d761-62c2-3d1c-301e-59b87a11018e.png)

## リモートへのプッシュ
Javaのパースペクティブを開き、
プロジェクトを右クリック→チーム→アップストリームへプッシュを選択し、
リモートへ反映させます。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/4198fbde-8ec2-3db8-5aa3-30f10ca92d46.png)


Gitbucketへアクセスし、変更が反映されていれば完了です。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/d548c9cf-ff0f-2e01-80db-84194d682e12.png)


## プロジェクトの取得
ここまでできたら、リモートからプロジェクトを取得してみましょう。
ローカルのプロジェクトはバックアップを取ってから削除します。

ファイル→インポートを選択します。
Git→Gitからプロジェクトを選択し、URIの複製を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/4fec4628-968e-cf1b-6200-97da8a66a1e0.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/116031/002b3c87-9919-78eb-df67-92594a8d1ab8.png)

Gitbucketの以下の赤丸部分をコピーし、URI入力欄に貼り付けます。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/6d7805f2-732d-d808-0f85-5f9d6f124eb9.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/116031/bcafef23-f53d-094d-e572-b177e9225b9e.png)

他の設定はすべてデフォルトで進めていき、
プロジェクトをインポートするためのウィザードは、
一番上を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/116031/91a42c55-933b-eaef-0907-6cd84773a1f0.png)

その後、完了ボタンを押すと、
プロジェクトがインポートされます。

ここまでできたらインポートされたプロジェクトの動作確認をしましょう。

プロジェクトのリフレッシュ後、
タスク・クイック・ランチャーからbootRunで実行し、
http://localhost:8080 に「Hello World!」が表示されたら成功です。

なお、バックアップしておいたプロジェクトと、
Gitから取得したプロジェクトを比較すると、
Git管理から除いたファイルのみ異なるはずです。


今回はここまでです。
それではみなさん、こんにちはこんばんはさようなら！

# 参考ページ
- [私家版 Git For Windowsのインストール手順 | OPC Diary](http://opcdiary.net/?page_id=27065 "私家版 Git For Windowsのインストール手順 | OPC Diary")
- [EclipseでGitHubとかGitBucketを使い始める方法 - White Box技術部](http://seri.hatenablog.com/entry/2014/03/16/214202 "EclipseでGitHubとかGitBucketを使い始める方法 - White Box技術部")