きっかけ
幾度となく新規プロジェクトを作るときに、同じエラーを出して、同じ調べごとをしているのでいい加減メモっとこう。
環境
Windows10
IntelliJ IDEA Community 2018.03
今回のソースはここ。
プロジェクトのテンプレ作成編
いつものSpring Initializrでプロジェクトのテンプレを作成。
Spring Bootのバージョンは理由もなく2.1.0。
依存は今回は何も使わないのでなくてもよいです。
こんな感じ。
インポート編
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ファイルが無いぞと怒られてしまう。
ここのところが必要。
// 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
ここまで、やるとようやくビルドが通るはず。
ちなみにgen配下の自動生成ファイルはコミットしない派です。
なんか環境の違いで毎回差分出ても困るなぁと思うので…
(今回はサンプル用に入れてますが)