LoginSignup
3
3

More than 5 years have passed since last update.

Gradleでbowerを利用したフロントエンドのビルドまでを行う方法 (2/6)

Last updated at Posted at 2016-03-31

はじめに

Java/SparkプロジェクトのGradleを利用したビルド/デプロイについて、私が試したことをまとめたものです。
(ここで言うSparkは、分散処理ライブラリのApache Sparkではなく、JavaのSinatraライクなMicroframeworkのSparkのことです)

目次

  1. Hello Worldアプリ
  2. jadeテンプレートエンジン
  3. Grunt/bowerによるWebパッケージのビルド
  4. 付録A. TravisCIによるビルド
  5. 付録B. Gradleでdocker build
  6. 付録C. TravisCIからDockerHubへ docker push

各章でのソースコードは Commits · kaakaa/gradle-frontend-boilerplate から確認できます。

環境

  • Java 1.8.0_74
  • Gradle 2.12
  • spark-core 2.3
  • spark-template-jade 2.3
  • node.js 4.4.0

2. jadeテンプレートエンジン

概要

Sparkのテンプレートエンジンとしてneuland/jade4j: a jade implementation written in Javaを使用したサンプル.

実行

git clone https://github.com/kaakaa/gradle-frontend-boilerplate.git
cd gradle-frontend-boilerplate
git checkout sec_2

./gradlew run

ビルドスクリプト

build.gradle
plugins {
    id 'java'
    id 'application'
}

group 'org.kaakaa'
version '1.0-SNAPSHOT'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

mainClassName = 'org.kaakaa.spark.Main'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.sparkjava:spark-core:2.3'
    compile 'com.sparkjava:spark-template-jade:2.3'  // (1) - jade4jへの依存を追加
}

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

(1) jade4jへの依存性を宣言

特に説明の必要はありませんが、sparkで使用するテンプレートエンジンとしてspark-template-jadeを指定しています。
その他のテンプレートエンジンを使用する場合は Spark Framework - Documentation を。

アプリケーションコード

org.kaakaa.spark.Main
package org.kaakaa.spark;

import spark.ModelAndView;
import spark.template.jade.JadeTemplateEngine;

import java.util.Collections;

import static spark.Spark.get;
import static spark.Spark.port;

public class Main {
    public static void main(String[] args) {
        port(8080);

        // (1) - jadeテンプレートを指定
        get("/hello", (rq, rs) -> new ModelAndView(Collections.EMPTY_MAP, "hello"), new JadeTemplateEngine());
    }
}
hello.jade
doctype html
html(lang="ja")
  head
    title gradle-frontend-boilerplate
  body
    h1 gradle-frontend-boilerplate
    p Hello World!

(1) jadeテンプレートを指定

/helloにアクセスされた場合、hello.jadeのjadeテンプレートを元に生成されたHTMLを返すよう指定しています。

1. Hello Worldアプリではgetメソッドの第2引数のラムダ式は単なるString文字列を返していましたが、テンプレートエンジンを使用する場合ModelAndViewクラスのインスタンスを返すようになります。
また、第3引数にテンプレートエンジンクラスのインスタンスを指定します。

ModelAndViewクラスのコンストラクタの第1引数にはテンプレート内で使用するオブジェクトをMap形式で指定し(今回は使用しないため空のMap)、第2引数にはテンプレートファイルの拡張子を除いたファイル名を指定します。  
この時、Sparkは第2引数で指定されたテンプレートファイルを${projectDir}/src/main/resource/templatesフォルダから探します。

Sparkがテンプレートファイルを探しに行くフォルダは、使用するテンプレートエンジンによって異なるようです。各Spark用テンプレートエンジンのREADMEに書いてあるようなので、確認しましょう。
spark-template-engines/spark-template-jade at master · perwendel/spark-template-engines

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3