MavenでS2JDBC-Genを使う
S2JDBC-Genを使ってみました。S2JDBC-GenはエンティティのアノテーションからDDLを生成したり、RailsのMigrationのようにDDLを適用できたりと非常に便利です。ただ、S2JDBC-GenはAntタスクなので、Mavenプロジェクトの場合には、(Ant単体で実行しようとすると)クラスパスへのS2JDBCなどの依存ライブラリの追加が面倒です。
その場合には、Maven Antrun pluginを使ってMavenで管理されている依存ライブラリをAntのクラスパスに設定して実行する方法が便利です。ライブラリのバージョンなどもpom.xmlの記述が反映されるのでメンテナンスも楽です。MavenからS2JDBC-genを使う方法についての情報は結構充実しているのですが、私が試した方法をメモしておきます。
pom.xmlに依存ライブラリの追加
s2jdbc-genのdependencyを追加します。
<dependency> <groupId>org.seasar.container</groupId> <artifactId>s2jdbc-gen</artifactId> <version>2.4.**</version> <scope>compile</scope> </dependency>
build.xmlの作成
以下のような内容でbuild.xmlを作成しました。とりあえずgen-ddlのみです。ファイル名はs2jdbc-gen-build.xmlとしました。
<?xml version="1.0" encoding="UTF-8"?> <project> <taskdef resource="s2jdbc-gen-task.properties" classpath="${classpath}" /> <property name="classpathdir" value="target/classes" /> <property name="rootpackagename" value="com.azuki3.sample" /> <target name="gen-ddl"> <gen-ddl classpathdir="${classpathdir}" rootpackagename="${rootpackagename}" classpath="${classpath}" env="${env}" sqlKeywordCase="uppercase" sqlIdentifierCase="lowercase" dump="false" /> </target> </project>
pom.xmlにAntrun pluginの記述を追加
詳細は前のエントリに。
<plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>default-cli</id> <configuration> <tasks> <property name="classpath" refid="maven.compile.classpath" /> <ant antfile="s2jdbc-gen-build.xml" target="${ant.target}" inheritRefs="true"></ant> </tasks> </configuration> </execution> </executions> </plugin>
s2jdbc-genを実行する
コマンドラインから実行します。データベースに接続する場合には、S2JDBCを使用したアプリケーションと同様にjdbc.diconに記述された情報が使用されます。
mvn antrun:run -Dant.target=gen-ddl