Mavenによるセットアップ
こちらは、
前提条件 ※Java8
前提となる環境
- Java8
g>dbflute g> は Apache Ant を利用するため、Java8 以上の実行環境が必要- Maven
- コマンドラインで mvn -version が打てる必要あり
- pom.xml
- アプリ用の pom.xml が既に用意されている必要あり
- インターネット
- Maven経由で
g>dbflute g> Engineをダウンロードするため
もし、複数DB対応をする場合、事前にポイントを抑えておきましょう。
セットアップ手順
1. g>dbflute g>ランタイムの設定 (JDBCドライバも)
アプリケーションのクラスパスに
2. g>dbflute g> Maven Plugin のインストール
そして、pom.xml の plugins に、"
- clientProject
- そのデータベース(スキーマ)を表現する名前 ※"スキーマ名そのまま" がオススメ
- packageBase
- 自動生成クラスのパッケージ ※"アプリのパッケージ.
g>dbflute g>" がオススメ
e.g. プラグイン情報の追加 (実行のための基本的な設定) @pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.g>dbflute g></groupId>
<artifactId>g>dbflute g>-maven-plugin</artifactId>
<version>1.1.0</version>
<configuration>
<clientProject>xxxdb</clientProject>
<packageBase>com.xxx.g>dbflute g></packageBase>
</configuration>
</plugin>
...
</plugins>
</build>
...
</project>
github に pom.xml の example がありますので参考に。
3. g>dbflute g>エンジンのダウンロード
コマンドラインで
e.g.g>dbflute g>:download ゴールを叩く! @Command...$ mvn -e
g>dbflute g>:download
すると、my
e.g. myg>dbflute g>にg>dbflute g>エンジン(1.1.0)がダウンロードされる @Directory[PROJECT_ROOT] |-src/main/java |-src/main/resources |-... |-my
g>dbflute g> |-g>dbflute g>-1.2.5 // これをg>dbflute g>エンジンと呼ぶ |-ant |-... |-templates |-build-torque.xml |-product-is-g>dbflute g>-1.2.5
4. g>dbflute g>クライアントの作成
コマンドラインで
e.g.g>dbflute g>:create-client ゴールを叩く! @Command...$ mvn -e
g>dbflute g>:create-client
すると、
e.g.g>dbflute g>クライアントが作成される @Directory[PROJECT_ROOT] |-src/main/java |-... |-
g>dbflute g>_xxxdb // ここをg>dbflute g>クライアントと呼ぶ |-dfprop //g>dbflute g>プロパティ(dfprop)がたくさん置いてあるディレクトリ |-... |-myg>dbflute g> |-g>dbflute g>-1.2.5 // こちらはg>dbflute g>エンジンと呼ぶ
5. g>dbflute g>プロパティの基本設定 (DB接続情報やDIコンテナなど)
まずは、
- basicInfoMap.dfprop
- database と targetContainer をアプリに合わせる
- databaseInfoMap.dfprop
- driver や url などのDB接続情報をアプリに合わせる
basicInfoMap.dfprop にて、データベース(DBMS)とDIコンテナをアプリで利用するものに修正します。以下は MySQL と Spring の例。
e.g. basicInfoMap.dfprop で、MySQL と Spring を指定 @basicInfoMap.dfprop
...
# /- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# o database: (Required)
# This is the target database, only considered when generating
# the SQL for your g>dbflute g> project.
# Your possible choices are:
#
# mysql, postgresql, oracle, db2, sqlserver,
# h2, derby, (sqlite, firebird, msaccess)
#
; database = mysql
# - - - - - - - - - -/
...
# /- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# o targetContainer: (Required)
# The target DI container.
# If your target language is 'csharp', you can specify 'seasar' only.
# Your possible choices are:
#
# spring, guice, seasar, cdi
#
; targetContainer = spring
# - - - - - - - - - -/
...
databaseInfoMap.dfprop は、
e.g. databaseInfoMap.dfprop で、MySQLのJDBC設定 @basicInfoMap.dfprop
...
map:{
; driver = com.mysql.jdbc.Driver
; url = jdbc:mysql://localhost:3306/xxxdb?characterEncoding=UTF-8
; schema =
; user = xxxdb
; password = xxxdb
...
}
DBMSごとのDB接続情報は、"DBMSごとの取扱い" のページを参考に。
dfpropは、テキストエディタで開くことができます。もし、Eclipse環境が整っているなら、
6. 特定環境適用プロパティ
ここからは、
dfpropは、実際に使い始めてからつどつど微調整していく形でOKですが、 さすがに自動生成前にやっておいたほうがいいだろう "特定環境適用プロパティ" もあるので、そちらのページをサッと目を通して必要であれば直しておきましょう。
7. JDBCドライバの準備 (Oracle や DB2 などであれば)
H2, MySQL, PostgreSQL は同梱されているので、この手順はスキップしてOKです。
8. クラスの自動生成
それでは、自動生成 (ReplaceSchema & generate) をしてみましょう。
9. DI設定の調整
アプリケーションで利用しているDIコンテナの環境に
10. その後の設定
ひとまず、アプリケーション上で
UnsupportedClassVersionErrorが発生したら
ReplaceSchema や Regenerate などの
JAVA_HOME を JDK8 に合わせて試してみましょう。
とりあえず、そのセッションだけ JAVA_HOME を設定して動かすのであれば、その場で export JAVA_HOME を実行するだけです。
e.g. Macで一時的に JAVA_HOME を設定 @.bash_profile
...$ export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
固定的に JAVA_HOME を設定するのであれば、.bash_profileに設定するとよいでしょう。
e.g. Macで .bash_profile に JAVA_HOME を設定 @.bash_profile
#!/bin/bash
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
...
ちょっとずつこういった問題はなくなっていくと思いますが、Java6,7,8 と環境が混じる時期では、まだ少し注意が必要です。
e.g. _project.sh Macで .bash_profile に JAVA_HOME を設定 @.bash_profile
#!/bin/bash
export ANT_OPTS=-Xmx512m
export g>dbflute g>_HOME=../myg>dbflute g>/g>dbflute g>-1.x
export MY_PROPERTIES_PATH=build.properties
if [ `uname` = "Darwin" ]; then
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
fi