Help us understand the problem. What is going on with this article?

EclipseでSpring Boot用のbuild.gradle

More than 5 years have passed since last update.

目的

最近はSpringの情報を検索すると、なんでもSpring Bootで動かしてるので、自分用に作ってみた。
build.gradleでEclipseWTPプロジェクトを作る の Spring Boot版という感じか。

事前準備

gradle のデフォルト構成のフォルダを作成しておく。
以下の様な構成。web用だけどWEB-INFディレクトリは要らないみたい。

プロジェクトフォルダ
├─build.gradle
└─src
  ├─main
  │  ├─java
  │  └─resources
  └─test
     ├─java
     └─resources

build.gradle の内容

下記の内容の build.gradle を作成して、gradle eclipse すると、Spring + Gradle のプロジェクトが作成される。

buildscript {
    repositories {
        jcenter()
        // maven { url "http://repo.spring.io/snapshot" }
        // maven { url "http://repo.spring.io/milestone" }
    }
    dependencies {
        // これを作成した時点の最新バージョンは1.2.5
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.5.RELEASE")
    }
}

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

// エンコーディング
def defaultEncoding = 'UTF-8'
[compileJava, compileTestJava]*.options*.encoding = defaultEncoding

// ソースと実行ファイルのJava バージョン
def jdkVersion = 1.8
sourceCompatibility = jdkVersion
targetCompatibility = jdkVersion

// 依存関係の解決
repositories {
    jcenter()
    // mavenCentral()
}

// 依存ライブラリの設定
dependencies {
    // ここにバージョン指定は不要らしい
    compile "org.springframework.boot:spring-boot-starter-web"

    testCompile "org.springframework.boot:spring-boot-starter-test"
}

//// eclipseの設定を毎回リセットする場合は下記の設定を有効にするか
//// gradle cleanEclipse eclipse を実行する
// tasks.eclipse.dependsOn(cleanEclipse)

// eclipse プロジェクトの設定
import org.gradle.plugins.ide.eclipse.model.SourceFolder
eclipse {
    // .project の設定
    project {
        // nature の追加
        // spring project nature を追加
        natures 'org.springframework.ide.eclipse.core.springnature'

        // Gradle nature を追加
        natures 'org.springsource.ide.eclipse.gradle.core.nature'

        // buildCommand の追加
        // spring のbuildCommand を追加
        buildCommand 'org.springframework.ide.eclipse.core.springbuilder'
    }

    // gradleで取得したjarのパスを絶対パスにしない
    // 事前に GRADLE_USER_HOME を設定しておく必要がある
    // Windows: [ウィンドウ]->[設定] を開く
    // Mac    : [Eclipse]->[環境設定]を開く
    // 設定ウィンドウが開いたら [Java]->[ビルド・パス]->[クラスパス変数] を選択する
    // [新規]ボタンを押下して [名前]:GRADLE_USER_HOME, [パス]:gradleを配置したパス を設定する
    pathVariables 'GRADLE_USER_HOME': gradle.gradleUserHomeDir

    // .classpath の設定
    classpath {
        // 依存している jar の source と javadoc をダウンロードする
        downloadSources = true    // デフォルトは false
        downloadJavadoc = true    // javadoc のパスは絶対パスになる

        file {
            // ソースパスの設定を削除
            beforeMerged { classpath ->
                // classpath.entries.clear()
                classpath.entries.removeAll { it.kind == "src" }
            }

            // 出力パスを gradle のデフォルトに合わせる
            whenMerged { classpath ->
                classpath.entries.findAll { it instanceof SourceFolder && it.path.startsWith("src/main/java")      }*.output = "build/classes/main"
                classpath.entries.findAll { it instanceof SourceFolder && it.path.startsWith("src/main/resources") }*.output = "build/resources/main"
                classpath.entries.findAll { it instanceof SourceFolder && it.path.startsWith("src/test/java")      }*.output = "build/classes/test"
                classpath.entries.findAll { it instanceof SourceFolder && it.path.startsWith("src/test/resources") }*.output = "build/resources/test"
                classpath.entries.removeAll { it.kind == "output" }
            }
        }
    }

    // .settings/org.eclipse.jdt.core.prefs の設定
    jdt {
        // 毎回固定の設定を行う場合は下記のようにする(テンプレは自前で用意しておく)
        /*
        file {
            def props = new Properties()
            props.load(new FileInputStream("${projectDir}/template/org.eclipse.jdt.core.prefs"))
            withProperties { properties -> properties.putAll(props) }
        }
        */
    }
}

使い方

  • JARの依存関係を見たいとき: gradle dependencies
  • Eclipseからアプリを実行したいとき: gradle bootRun でアプリが実行される。内部でtomcat-embedが動作しているので、ブラウザで、localhost:8080/[@RequstMappingで設定したパス] にアクセスする。
  • JARファイルをコマンドから実行したいとき: gralde build でJARファイルを作成してから、java -jar [jarファイル名]。アプリを終了するときは、Ctrl+C でアプリを停止する。

参照したURL

あと、はじめての Spring Boot の1章も参考にしました。

pica
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away