This is a cache of http://dbflute.seasar.org/ja/manual/function/generator/task/replaceschema/arrangebeforereps.html. It is a snapshot of the page as it appeared on 2026-01-12T00:25:30.214+0000.
ReplaceSchema実行前の調整 | DBFlute

ReplaceSchema実行前の調整

概要

ReplaceSchema実行前に、ファイルコピーなどの調整(アレンジ操作)ができます。@since 0.9.8.5

例えば、DDLの出力先を保存できないERDツールや、フルパスで保存してしまうERDツールなどを利用している場合に、 ReplaceSchema実行前にDBFlute管理外の場所に出力されたDDLファイルを playsql 配下にコピーさせることができます。

コピー

replaceSchemaMap.dfprop の arrangeBeforeRepsMap にて、 copy指定すると、ReplaceSchemaの最初の処理でそのコピーが実行されます。

e.g. foo.ddl を replace-schema-10-basic.sql にコピー @replaceSchemaMap.dfprop
; arrangeBeforeRepsMap = map:{
    ; copy = map:{
        ; ../erd/foo.ddl = ./playsql/replace-schema-10-basic.sql
    }
}

拡張子検索コピー

src にて "*.ddl" というように指定することができます。この場合、dest の指定によって挙動が変わります。

dest がファイル
dest の指定がファイルをさす場合(ドット "." を含む)、src のディレクトリの中にある唯一の指定された拡張子を持つファイルをコピーします。 単一ファイルのコピーにおいて、ファイル名が定まらない場合に有効です。
dest がディレクトリ
dest の指定がディレクトリをさす場合(ドット "." を含まない)、src のディレクトリの中にある指定された拡張子を持つ全てのファイルをコピーします。 @since 0.9.9.1A
e.g. foo.ddl を replace-schema-10-basic.sql にコピー @replaceSchemaMap.dfprop
; arrangeBeforeRepsMap = map:{
    ; copy = map:{
        ; ../erd/*.ddl = ./playsql/replace-schema-10-basic.sql
    }
}
e.g. playsql の .sql ファイルを全て ../tmp 配下にコピー @replaceSchemaMap.dfprop
; arrangeBeforeRepsMap = map:{
    ; copy = map:{
        ; ./playsql/*.sql = ../tmp
    }
}

絶対パスコピー

パス表現がスラッシュ "/" で始まる場合は、絶対パスとなります。DDLの出力先を絶対パスで保存してしまうERDツールで複数人で利用するような場合に、例えばDDLの出力先を "/tmp/foo/bar.sql" と固定して、それをReplaceSchemaでコピーするような仕組みにすると、煩雑な出力先指定を軽減できます。

e.g. tmp配下の bar.sql を replace-schema-10-basic.sql にコピー @replaceSchemaMap.dfprop
; arrangeBeforeRepsMap = map:{
    ; copy = map:{
        ; /tmp/foo/bar.sql = ./playsql/replace-schema-10-basic.sql
    }
}

テキストフィルター @since 1.3.1

replaceSchemaMap.dfprop の arrangeBeforeRepsMap にて、filterText指定すると、テキストファイルのフィルターができます。

e.g. sea を land に一括置換、mystic を oneman に一括置換 @replaceSchemaMap.dfprop
; arrangeBeforeRepsMap = map:{
    ; filterText = map:{
        ; replaceLinely = map:{
            ; ./playsql/maihama.sql = map:{
                ; sea = land
                ; mystic = oneman
            }
        }
        ; replaceWholly = map:{
            ; ./playsql/maihama.sql = map:{
                ; sea = land
                ; mystic = oneman
            }
        }
    }
}

replaceLinely の方は、一行ずつ一括置換していきます。なので改行をまたいだ置換はできません。

replaceWholly の方は、テキストファイルまるごとの文字列に対して一括置換していきます。なので改行またぎの置換ができます。

改行またぎをしない場合はどちらも変わりはありませんが、サイズが大きいテキストファイルのときにパフォーマンス的な相性があるかもしれないので、とりあえず二つの方法を用意しています。

コピー処理よりも後に動作するので、コピー後のファイルに対してフィルターすることができます。

スクリプト実行 @since 1.0.4H

replaceSchemaMap.dfprop の arrangeBeforeRepsMap にて、 script指定すると、ReplaceSchemaの最初の処理でそのスクリプトが実行されます。

e.g. maven-install.sh を実行 @replaceSchemaMap.dfprop
; arrangeBeforeRepsMap = map:{
    ; script = map:{
        ; ../maven-install.sh = dummy
    }
}

map の key 値に、スクリプトのファイル名を相対パスで指定すると、そのファイルが実行されます。 Windowsであれば .bat, Macであれば .sh という風に実行できる拡張子が限定されています。 例えば、Windows環境では .sh は実行されずにスキップされます。

map の value 値は dummy で未使用(将来用)です。