gradleでs2jdbc-gen

2012-12-15T00:00:00+00:00 gradle

ちょいとドキュメント遂行レポートを中断して、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とか使って色々作業する場合問題が出てくるのでは無いかっていう所

んまぁとりあえずハマったけどなんとか出来てちょいと(自己)満足

Chrome Extension開発を勉強してみる (22) - chrome.alarmsを使う - gradle使ってみる (4) - Java Plugin -