7's workspace

業務外にSpringBootを使ってWebアプリを完成させるまでの記録

【第2回】Gradleでプロジェクト作成

【第2回】

Gradleでプロジェクト作成

ブログ風ナレッジ置き場「Poi」の完成までの流れは、

  1. 画面遷移するだけのベースを作る

  2. 新規登録機能を作る

  3. ログイン機能を作る

  4. メモの登録、編集、削除機能を作る

  5. フロント側を作る

ざっくりとこんな感じにしようと思います。

5.のフロント側については、頭の中でイメージがぽんぽん出てくるので

サーバ側の実装中に割り込みで入れることもあるかと思います。

(気分転換、大事!)

ではさっそく、「1. 画面遷移するだけのベースを作る」を始めましょう。

といいたいところですが、、、

プロジェクト作成をGradleを使ってやりたい、というものの

Gradleの基礎がわかっていなかったので上記サイトで一通り見直しました。

Gradleの使い方を確認

自分の環境に合わせて少し変更しながら確認。

例えばここではJavaのバージョンが1.7.0_40

「build.gradle」が以下のようになっていましたが、

自分はJava8を使うので、1.6のところは1.8に変更する、など。

apply plugin: 'java'

sourceCompatibility = '1.6' // -source
targetCompatibility = '1.6' // -target

あと余談ですが、「Eclipse のバージョンは Juno・・・」という表記があって、

そういえばEclipseのバージョンにどんなものがあったか

詳しく知らないなぁと思って見直しました。(自分はMarsから知ったのでJunoって?となりました)

次、2017年6月には「Oxygen」(酸素)が出る予定なんですね〜。

ひっかかった点

このGradleの復習中にひっかかった点は、以下2点。

  1. JavaDocを作成するところで、文字化けが起こった

  2. warファイルのデプロイ作業がうまくいかなかった

順に見ていきます。

文字化け対策

まず、「1. JavaDocを作成するところで、文字化けが起こった」について・・・

検索したら解決方法がすぐ出てきました。

qiita.com

build.gradleに以下を設定することで解決しました。

javadoc {

    options.charSet = 'UTF-8'

    options.encoding = 'UTF-8'

}

ちなみに、ターミナルの文字コード確認するコマンドはこちら。

echo $LANG

ja_JP.UTF-8

Tomcatにデプロイする

次に、「2. warファイルのデプロイ作業がうまくいかなかった」について・・・

Webアプリケーションをデプロイする作業です。

めったにやらないので知識がすごく曖昧でした…

(結局、index.htmlの配置フォルダが間違っていたというオチ。)

index.htmlを置く位置は、

/src/main/webappの直下です。

 ※ここがウェブアプリケーションのソースフォルダになります

gradle warコマンドで、正しくwarファイルができたら

build/libsに作成されたwarファイルを、Tomcatのwebapps直下に配置します。

この作業を「デプロイ」といいます。

Tomcatのwebapps直下にwarファイルを置くと、Tomcatがwarファイルを自動展開して、

同じ階層にwarファイルと同名のフォルダを作成します。

 ※これがWebアプリケーションのコンテキストパスになります

webapps/hello/

webapps/hello.war

そして、Tomcatはできたフォルダ(コンテキストパスの方)を読み込んでWebアプリケーションを実行します。

(参考URL)

[http://d.hatena.ne.jp/ozuma/20131227/1388151846:title]

[https://garafu.blogspot.jp/2016/05/how-to-deploy-tomcat-webapp.html:title]

今回のbuild.gradleを作成

ざっと確認できた時点で、「Poi」用のbuild.gradleを作成しました。

buildscript {
  ext {
    springBootVersion = '1.4.3.RELEASE'
  }
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    classpath("org.springframework:springloaded:1.2.5.RELEASE")
  }
}

apply plugin: "java"
apply plugin: "spring-boot"
apply plugin: "eclipse"

repositories {
  mavenCentral()
}

dependencies {
  compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
  // Test
  testCompile("org.springframework.boot:spring-boot-starter-test:1.2.1.RELEASE")
}

compileJava {
  options.encoding = 'UTF-8'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

javadoc {
    options.charSet = 'UTF-8'
    options.encoding = 'UTF-8'
}

task wrapper(type: Wrapper) {
  gradleVersion = '2.9'
}

シ、シンプル・・・

PostgresとかDoma2とか、依存関係の部分に追加していく予定です。 追加したらまた改めてアップします。

今回Gradleの使い方を確認したことで、 Webアプリのディレクトリ構成とかTomcatについても復習になって とても良かったなぁと思います。

ターミナルで使うコマンドとか、 Markdownの使い方も調べ直したり…

(記事の見やすさについても研究せねば。)

それはさておき。 プロジェクトができて、やっとスタート地点に立てました。

次回は、「①画面遷移するだけのベースを作る」に入ります。