GradleでDomaアプリをビルド
Gradleも1.0がリリースされたということで、GradleでDomaアプリをビルドするという課題が与えられました(誰にだ)。Domaはpluggable annotation processing api(APTとも呼ばれる)を使っており、ビルド設定が鬼門だったりするので。
DomaのチュートリアルのGradle化です。
で、build.gradle
apply plugin: 'java' sourceCompatibility = targetCompatibility = 1.6 [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' processResources.destinationDir = compileJava.destinationDir compileJava.dependsOn processResources def aptGeneratePath = 'build/apt_generated' compileJava.options.compilerArgs = ['-s', aptGeneratePath] compileJava.doFirst { file(aptGeneratePath).mkdirs() } repositories { mavenCentral() maven {url 'http://maven.seasar.org/maven2'} } dependencies { compile group: 'org.seasar.doma', name: 'doma', version: '1.22.0' compile group: 'com.h2database', name: 'h2', version: '1.2.126' testCompile group: 'junit', name: 'junit', version: '3.8.2' }
ポイントは、Domaはコンパイル時にSQLファイルの正常性をチェックするので、コンパイルの前にSQLファイルをコピーしなくてはいけない。以下で、デフォルトの依存関係を逆にします。
compileJava.dependsOn processResources
それと、クラスファイルとSQLファイルは、同じclasses配下に出力される必要もあるんで、以下のように同じにしちゃいました。
processResources.destinationDir = compileJava.destinationDir
mavenは、XMLのタグ属性を使わないので記述がどうしても長くなりますよね。ant+Ivyより長くなったり。それに比べ、Gradleは短いですよね。小回りも効きそうだし。
以上です。
ところで、Domaのチュートリアルでtutorial.dao.CustomEmployeeDaoって要らないクラスじゃないですか? |ω・`)チラ
(2013/07/16追記)
apt_generatedのディレクトリ作成をcompileJavaタスクの最初にのみ動くように変更しました。