gradleでs2jdbc-gen
ちょいとドキュメント遂行レポートを中断して、s2jdbc-genをgradleで出来ないかを検証してみた
以前ではMavenからAntタスクを動かして実行した。それをgradleで出来るようにする。s2jdbc-gen-build.xmlはそのまま以前のを利用する
build.gradle
apply plugin: "java"
repositories {
mavenCentral()
maven {
url "http://maven.seasar.org/maven2"
}
}
dependencies {
runtime "commons-logging:commons-logging-api:1.1"
runtime "org.javassist:javassist:3.17.1-GA"
runtime "javax.persistence:toplink-essentials:1.0"
runtime "org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.0"
runtime "org.apache.geronimo.specs:geronimo-ejb_3.0_spec:1.0"
runtime "mysql:mysql-connector-java:5.1.21"
runtime "org.seasar.container:s2-framework:2.4.44"
runtime "org.seasar.container:s2-extension:2.4.44"
runtime "org.seasar.container:s2-tiger:2.4.44"
runtime "org.seasar.container:s2jdbc-gen:2.4.46"
runtime "org.seasar.sastruts:sa-struts:1.0.4-sp9"
// S2JDBCエンティティクラスをコンパイルするのに必要
compile "org.apache.geronimo.specs:geronimo-jpa_3.0_spec:1.0"
}
buildDir = "target"
sourceSets {
main {
output.classesDir = "${buildDir}/classes"
output.resourcesDir = "${buildDir}/classes"
}
}
ant.classpath = runtimeClasspath.asPath + ":" + configurations.runtime.asPath
ant.importBuild "s2jdbc-gen-build.xml"
実行
├── build.gradle ├── s2jdbc-gen-build.xml ├── src └── main ├── resources ├── app.dicon ├── application.properties ├── application_ja.properties ├── convention.dicon ├── creator.dicon ├── customizer.dicon ├── env.txt ├── env_ut.txt ├── jdbc.dicon ├── log4j.properties ├── s2container.dicon └── s2jdbc.dicon
んまぁ初期構成がこうなってる訳。まずはgen-entityでs2jdbc.diconからデータベース接続を行なって、エンティティクラスを生成する。それにはまずリソースファイルをビルドしないといけないのでbuildタスクを実行しておく。でその後にgen-entityタスクを実行。src/main/javaにエンティティクラスのJavaソースが生成される
んで今度はgen-ddlをしてみるんだけど、これも一度エンティティクラスをビルドしないと出来ないのでcompileJavaタスク辺りを実行しておく。んでもってgen-ddlタスクを実行する。
というような感じ。で結果ディレクトリ構造的に
├── build.gradle ├── db │ ├── ddl-info.txt │ └── migrate │ ├── 0000 │ │ └── drop │ │ ├── 030-uniquekey │ │ │ └── users.sql │ │ └── 040-table │ │ ├── sample.sql │ │ └── users.sql │ └── 0001 │ ├── create │ │ ├── 010-table │ │ │ ├── sample.sql │ │ │ └── users.sql │ │ ├── 020-uniquekey │ │ │ └── users.sql │ │ └── 040-dump │ │ ├── sample.csv │ │ └── users.csv │ └── drop │ ├── 030-uniquekey │ │ └── users.sql │ └── 040-table │ ├── sample.sql │ └── users.sql ├── s2jdbc-gen-build.xml ├── src │ └── main │ ├── java │ │ └── sample │ │ └── entity │ │ ├── Sample.java │ │ └── Users.java │ ├── resources │ ├── app.dicon │ ├── application.properties │ ├── application_ja.properties │ ├── convention.dicon │ ├── creator.dicon │ ├── customizer.dicon │ ├── env.txt │ ├── env_ut.txt │ ├── jdbc.dicon │ ├── log4j.properties │ ├── s2container.dicon │ └── s2jdbc.dicon │ └── target ├── classes ├── app.dicon ├── application.properties ├── application_ja.properties ├── convention.dicon ├── creator.dicon ├── customizer.dicon ├── env.txt ├── env_ut.txt ├── jdbc.dicon ├── log4j.properties ├── s2container.dicon ├── s2jdbc.dicon └── sample └── entity ├── Sample.class └── Users.class
てな感じ。で問題点として、やはり色々ビルドしながらタスクを実行せざるをえない所がある点と恐らくはEclipseとか使って色々作業する場合問題が出てくるのでは無いかっていう所
んまぁとりあえずハマったけどなんとか出来てちょいと(自己)満足