このエントリーをはてなブックマークに追加

※注意※ 2015-04-19時点で、自動コンパイルが出来ていません


はじまりはじまり

公式をみる

スケルトンアプリの立ち上げ

mac 環境なので、homebrewでgradle入れます。

$ brew install gradle 

ファイル作ります(コピペ

build.gradle

buildscript {
    repositories {
        jcenter()
        maven { url "http://repo.spring.io/snapshot" }
        maven { url "http://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.0.BUILD-SNAPSHOT")
    }
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot.spring-boot'

jar {
    baseName = 'myproject'
    version =  '0.0.1-SNAPSHOT'
}

repositories {
    jcenter()
    maven { url "http://repo.spring.io/snapshot" }
    maven { url "http://repo.spring.io/milestone" }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}

エントリポイントのファイル作ります(コピペ

src/main/java/Example.java

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }

}

アプリを立ち上げる

cd path/to/build.gradle.dir
$ gradle bootRun

ブラウザを確認して( http://127.0.0.1:8080 )、 Hello World! が表示されてたらOK!


IntelliJでデバッグする

まずこちら読んで下さい

ここできちんと理解しておくべきは、

  • 自動コンパイル
  • 自動リロード(クラスリロード)

の2つが無いと、Play2みたいなイメージのデバッグはできないということです。

IntelliJでプロジェクトを読み込む

割愛

NG: 自動コンパイル

  • このへん を参考にしましたが、うまく行きません。
  • あとfswatchを使ってgradle build を走らせてみましたが、遅すぎでした(>_<)
    • fswatch使って個別のファイルコンパイルさせればうまくいくのかなぁ...

代替: 手動コンパイル&クラスリロード(2015-04-18時点でのよさげな手段)

http://www.jetbrains.com/idea/help/reloading-classes.html

  • IntelliJからこのアプリを起動します
    • Example.javaを開いて、右クリック→ Debug を選べば起動するはずです。
  • Example.javaの内容を変更します。
  • メインメニューの Run>Reload Changed Classes を実行するとアプリが再起動することなく、再コンパイルされたクラスがリロードされます
  • デバッグ起動しているので、ブレークポイントとかも貼れます。

感想とかこのあと

  • 手動トリガーのコンパイルでも結構早いところが救いかな...
  • fswatch(というかファイル変更検知)をうまく使ってなんとかしたい