takeda_san’s blog

KotlinとVRを頑張っていく方向。

Doma2+SpringBoot+GradleをIntelliJ IDEAでやっていくときのアレコレ

きっかけ

幾度となく新規プロジェクトを作るときに、同じエラーを出して、同じ調べごとをしているのでいい加減メモっとこう。

環境

Windows10
IntelliJ IDEA Community 2018.03

今回のソースはここ。

github.com

プロジェクトのテンプレ作成編

いつものSpring Initializrでプロジェクトのテンプレを作成。
Spring Bootのバージョンは理由もなく2.1.0。
依存は今回は何も使わないのでなくてもよいです。

こんな感じ。
f:id:takeda_san:20181128220335p:plain

インポート編

IntelliJにインポートする。
公式にすんごい丁寧な解説があるので、その通りです。

はじめよう! (IntelliJ IDEA) — Doma 2.0 ドキュメント

ちなみにこれ取り込むときにやり忘れちゃった場合は、
ツールバーのFile->Settingsで設定画面開いて
Build, Execution, Deployment->Build Tools->Gradleから変えられるから焦らなくても大丈夫。
(Create separate module per source setのチェック外し忘れて、慌てて一からインポートしなおしたのは秘密)

激闘Gradle編

Gradleを使っているともうひと仕事必要。

Doma2関連の追加

build.gradleにDoma2関連を追加する。
臆することなく最新版を入れよう。

compile ("org.seasar.doma.boot:doma-spring-boot-starter:1.1.1")
compile ("org.seasar.doma:doma:2.19.3")

dependenciesにこんな感じで。

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    runtimeOnly('com.h2database:h2')
    compile("org.seasar.doma.boot:doma-spring-boot-starter:1.1.1")
    compile("org.seasar.doma:doma:2.19.3")
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

SQLファイルの出力設定

これも公式にわかりやーく書いてあるのだけれども、これを入れておかないとsqlファイルが無いぞと怒られてしまう。

ビルド — Doma 2.0 ドキュメント

ここのところが必要。

// JavaクラスとSQLファイルの出力先ディレクトリを同じにする
processResources.destinationDir = compileJava.destinationDir
// コンパイルより前にSQLファイルを出力先ディレクトリにコピーするために依存関係を逆転する
compileJava.dependsOn processResources

でも、これを入れてもまだ、怒られるのだ。

Error:(13, 28) java: [DOMA4019] ファイル[META-INF/jp/takeda/doma2sample/dao/PersonDomaDao/selectAll.sql]がクラスパスから見つかりませんでした。ファイルの絶対パスは"C:\Users\taked\workspace\doma2sample\out\production\classes\META-INF\jp\takeda\doma2sample\dao\PersonDomaDao\selectAll.sql"です。

そこになければないですねー。
あとは自動生成されるDaoのインタフェースの実装ファイルがないとかでも怒られる。

GradleのIDEA用プラグイン

ここの公式のサンプルにもある通り、build.gradleにもうちょっと追加が必要。

https://github.com/domaframework/simple-boilerplate/blob/master/build.gradle

この2行。

apply plugin: 'idea'
idea.module.inheritOutputDirs = true

第39章 IDEAプラグイン

ここまで、やるとようやくビルドが通るはず。
ちなみにgen配下の自動生成ファイルはコミットしない派です。
なんか環境の違いで毎回差分出ても困るなぁと思うので…
(今回はサンプル用に入れてますが)

KotlinでEntityクラスを書いたときのエラー

続きです。
takeda-san.hatenablog.com