読者です 読者をやめる 読者になる 読者になる

かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot で書籍の貸出状況確認・貸出申請する Web アプリケーションを作る ( 番外編 )( IntelliJ IDEA Ultimate Edition での Spring Boot プロジェクトの作成 )

はじめに

IntelliJ IDEA の Ultimate Edition では Spring Boot のプロジェクト作成機能が強化されているらしいので、試してみたいと思います。

Spring Boot プロジェクトを作成してみる

  1. 「Welcome to IntelliJ IDEA」画面の「Create New Project」リンクをクリックします。

    f:id:ksby:20150630225439p:plain

  2. 「New Project」画面が表示されます。画面左側のリストから「Spring Initializr」を選択した後、「Next」ボタンをクリックします。

    f:id:ksby:20150630225837p:plain

  3. Name 等を入力する画面が表示されます。以下の点を変更し、「Next」ボタンをクリックします。

    • 「Type」を「Gradle Project」に変更します。
    • 他の項目はそのままにします。

    f:id:ksby:20150630233010p:plain

  4. Spring Boot のバージョンと Dependencies を選択する画面が表示されます。Web と Thymeleaf だけ選択して「Next」ボタンをクリックしてみます。それにしてもいろいろ知らないものがありますね。。。

    f:id:ksby:20150630231425p:plain

    Spring Boot Version には最新の 1.3.0 M1 も選択できるようになっています。

    f:id:ksby:20150630231959p:plain

  5. Project name を入力する画面が表示されます。「Project name」を "demo" に変更して「Finish」ボタンをクリックします。

    f:id:ksby:20150630232335p:plain

  6. メイン画面が表示されますが、画面右上に「Unlinked Gradle project?」というメッセージが表示されました。

    f:id:ksby:20150630233352p:plain

    Project のディレクトリ構成は現時点では以下のようになっています。何か物足りないですね。

    f:id:ksby:20150630233600p:plain

  7. 画面右上の「Unlinked Gradle project?」のメッセージの中に表示されていた「Import Gradle project」リンクをクリックしてみます。ただし Project のディレクトリ構成を確認した時にメッセージが消えてしまったので、画面右下の「Event Log」ボタンをクリックして Event Log Window を開いた後、Window の中に表示されている「Import Gradle project」リンクをクリックします。

    f:id:ksby:20150630234048p:plain

    f:id:ksby:20150630234257p:plain

  8. 「Import Project from Gradle」ダイアログが表示されました。以下の点を変更し「OK」ボタンをクリックします。

    • 「Create directories for empty content roots automatically」をチェックします。
    • 「Use customizable gradle wrapper」を選択します。
    • 「Gradle JVM」を「Use JAVA_HOME」ではなく「1.8.0_45」に変更します。

    f:id:ksby:20150630234728p:plain

  9. Gradle の処理が実行されて、完了すると Project のディレクトリ構成が以下の画像のように変わります。ディレクトリの色やファイルのアイコンがいつものものになりました。

    f:id:ksby:20150630235043p:plain

    Community Edition で Gradle Project として作成していた時と異なるのは以下の点でした。

    • @SpringBootApplication アノテーションが付加された Application クラスが自動で生成されます。
    • Application クラスに対応する ApplicationTest クラスも自動で生成されます。
    • src/main/resources の下に static, templates ディレクトリが自動で生成されます。
    • src/main/resources の下に application.properties が自動で生成されます ( ただし中身は空でした )。
    • build.gradle が自動で生成されます。

    自動生成されたファイルについては「ソースコード」欄に記載します。

感想

  • 簡単なアプリケーションを作る時は便利そうです。また 1.3.0 M1 を試してみたい時とかは便利ですね。
  • 普通にアプリケーションを作る時は Community Edition と同じく Gradle Project で作成して、あらかじめテンプレートとして作成しておいた build.gradle をコピーした方が良さそうな気がします。
  • 自動生成された build.gradle の中で利用可能なものについては今回の作成する build.gradle に反映したいと思います。

ソースコード

DemoApplication.java

package demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

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

DemoApplicationTests.java

package demo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = DemoApplication.class)
@WebAppConfiguration
public class DemoApplicationTests {

    @Test
    public void contextLoads() {
    }

}

build.gradle

buildscript {
    ext {
        springBootVersion = '1.2.4.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
        classpath("io.spring.gradle:dependency-management-plugin:0.5.1.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot' 
apply plugin: 'io.spring.dependency-management' 

jar {
    baseName = 'demo'
    version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}


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


eclipse {
    classpath {
         containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
         containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.3'
}
  • jcenter() ではなく mavenCentral() になっていました。
  • dependency-management-plugin が記述されていました。1.3.0 からだと思っていたのですが、1.2.4 からでも使えるのでしょうか?
  • apply plugin: 'eclipse'apply plugin: 'io.spring.dependency-management' という plugin も記述されていました。
  • eclipse のための設定も出力されているようです。

履歴

2015/07/01
初版発行。