This is a cache of http://dbflute.seasar.org/ja/environment/setup/maven.html. It is a snapshot of the page at 2024-03-19T00:01:57.340+0000.
Mavenによるセットアップ | <stron<strong>g</strong>>dbflute</stron<strong>g</strong>>

Mavenによるセットアップ

こちらは、g>dbfluteg>-1.1.x (Java8) のためのドキュメントになっています。

前提条件 ※Java8

前提となる環境

Java8
g>dbfluteg> は Apache Ant を利用するため、Java8 以上の実行環境が必要
Maven
コマンドラインで mvn -version が打てる必要あり
pom.xml
アプリ用の pom.xml が既に用意されている必要あり
インターネット
Maven経由でg>dbfluteg> Engineをダウンロードするため

もし、複数DB対応をする場合、事前にポイントを抑えておきましょう。

セットアップ手順

1. g>dbfluteg>ランタイムの設定 (JDBCドライバも)

アプリケーションのクラスパスにg>dbfluteg>ランタイム(JAR)を追加して下さい。

2. g>dbfluteg> Maven Plugin のインストール

そして、pom.xml の plugins に、"g>dbfluteg> Maven Plugin" を入れます。

clientProject
そのデータベース(スキーマ)を表現する名前 ※"スキーマ名そのまま" がオススメ
packageBase
自動生成クラスのパッケージ ※"アプリのパッケージ.g>dbfluteg>" がオススメ
e.g. プラグイン情報の追加 (実行のための基本的な設定) @pom.xml
<?xml version="1.0" encoding="UTF-8"?&gt;
<project&gt;
...
    <build&gt;
        <plugins&gt;
            ...
            <plugin&gt;
                <groupId&gt;org.g>dbfluteg></groupId&gt;
                <artifactId&gt;g>dbfluteg>-maven-plugin</artifactId&gt;
                <version&gt;1.1.0</version&gt;
                <configuration&gt;
                    <clientProject&gt;xxxdb</clientProject&gt;
                    <packageBase&gt;com.xxx.g>dbfluteg></packageBase&gt;
                </configuration&gt;
            </plugin&gt;
            ...
        </plugins&gt;
    </build&gt;
...
</project&gt;

github に pom.xml の example がありますので参考に。

3. g>dbfluteg>エンジンのダウンロード

コマンドラインで g>dbfluteg>:download ゴールを叩きます。

e.g. g>dbfluteg>:download ゴールを叩く! @Command
...$ mvn -e g>dbfluteg>:download

すると、myg>dbfluteg>配下に、g>dbfluteg>エンジンがダウンロードされます。 こちらは、この後に作成するg>dbfluteg>クライアントから参照されるだけで、基本的にさわることはありません。 (myg>dbfluteg>配下を見るのは、g>dbfluteg>エンジンのバージョンを確認するときくらい)

e.g. myg>dbfluteg>にg>dbfluteg>エンジン(1.1.0)がダウンロードされる @Directory
[PROJECT_ROOT]
 |-src/main/java
 |-src/main/resources
 |-...
 |-myg>dbfluteg>
    |-g>dbfluteg>-1.2.5 // これをg>dbfluteg>エンジンと呼ぶ
       |-ant
       |-...
       |-templates
       |-build-torque.xml
       |-product-is-g>dbfluteg>-1.2.5

4. g>dbfluteg>クライアントの作成

コマンドラインで g>dbfluteg>:create-client ゴールを叩きます。

e.g. g>dbfluteg>:create-client ゴールを叩く! @Command
...$ mvn -e g>dbfluteg>:create-client

すると、g>dbfluteg>_xxxdb というディレクトリが作成されます。これを "g>dbfluteg>クライアント" と呼び、g>dbfluteg>をアプリに合わせるための設定や、g>dbfluteg>実行するためのスクリプトがあり、何かと見たりさわったりする機会の多いところです。

e.g. g>dbfluteg>クライアントが作成される @Directory
[PROJECT_ROOT]
 |-src/main/java
 |-...
 |-g>dbfluteg>_xxxdb // ここをg>dbfluteg>クライアントと呼ぶ
    |-dfprop     // g>dbfluteg>プロパティ(dfprop)がたくさん置いてあるディレクトリ
    |-...
 |-myg>dbfluteg>
    |-g>dbfluteg>-1.2.5 // こちらはg>dbfluteg>エンジンと呼ぶ

5. g>dbfluteg>プロパティの基本設定 (DB接続情報やDIコンテナなど)

まずは、g>dbfluteg>クライアント (g>dbfluteg>_xxxdb) の dfprop 配下にある、ふたつの dfprop ファイルを修正しましょう。 (dfpropファイルの設定を "g>dbfluteg>プロパティ" と呼びます)

basicInfoMap.dfprop
databasetargetContainer をアプリに合わせる
databaseInfoMap.dfprop
driverurl などの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>dbfluteg> 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 は、g>dbfluteg>クライアント作成直後はデフォルト設定なので、 アプリで利用するDMBSのJDBCの設定に修正します。以下は MySQL の例。

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環境が整っているなら、g>dbfluteg> の Eclipse プラグインである "EMecha" で dfprop を開けば、dfpropの色付けや重複キーや閉じ括弧チェックがされて編集しやすくなります。

6. 特定環境適用プロパティ

ここからは、g>dbfluteg> Maven Plugin に関係なく、どのセットアップ方法でも必要な手順です。

dfpropは、実際に使い始めてからつどつど微調整していく形でOKですが、 さすがに自動生成前にやっておいたほうがいいだろう "特定環境適用プロパティ" もあるので、そちらのページをサッと目を通して必要であれば直しておきましょう。

7. JDBCドライバの準備 (Oracle や DB2 などであれば)

g>dbfluteg>エンジンに同梱されていない DBMS (Oracle や DB2 など) であれば、JDBCドライバをダウンロードしてg>dbfluteg>クライアントの extlib に配置する必要があります。

H2, MySQL, PostgreSQL は同梱されているので、この手順はスキップしてOKです。

8. クラスの自動生成

それでは、自動生成 (ReplaceSchema & generate) をしてみましょう。

g>dbfluteg>タスク実行時に、 java.lang.UnsupportedClassVersionError, Unsupported major.minor version 52.0 のエラーが発生したときは、JAVA_HOME の設定を確認してみましょう。

9. DI設定の調整

アプリケーションで利用しているDIコンテナの環境にg>dbfluteg>のクラスを認識させて下さい。

10. その後の設定

ひとまず、アプリケーション上でg>dbfluteg>のクラスを利用することができるようになりました。 しかし、ディベロッパーに横展開するまでには、まだあともうちょい頑張りが必要です。 より良い環境で実装してもらうために、現場フィットな機能を整えましょう!

UnsupportedClassVersionErrorが発生したら

ReplaceSchema や Regenerate などのg>dbfluteg>タスク実行時に、UnsupportedClassVersionError, Unsupported major.minor version 52.0 のエラーが発生した場合は、環境変数の JAVA_HOME の設定が、Java8 ではなく Java6,7 になっている可能性があります。 (もしかしたら、JAVA_HOMEが設定されていないときでも発生するかもしれません)

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 と環境が混じる時期では、まだ少し注意が必要です。

g>dbfluteg>の方で、JAVA_HOMEが設定されるようにしてもいいかもしれません。g>dbfluteg>クライアントの _project.sh にて、Macだったときにだけ JAVA_HOME が設定されるように。 (ただ、すべての人の環境でちゃんと動くかどうかは不明です...でも、g>dbfluteg>の幾つかのExampleでは入れてしまっています)

e.g. _project.sh Macで .bash_profile に JAVA_HOME を設定 @.bash_profile
#!/bin/bash

export ANT_OPTS=-Xmx512m

export g>dbfluteg>_HOME=../myg>dbfluteg>/g>dbfluteg>-1.x

export MY_PROPERTIES_PATH=build.properties

if [ `uname` = "Darwin" ]; then
  export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
fi