プログラマでありたい

おっさんになっても、プログラマでありつづけたい

sql-maven-pluginの使い方

やりたいこと

 1. Continuumで、連結テストの管理をしたい
 2. 連結テストの実行前に、Subversionから最新のDDLをチェックアウトして連結環境でDDLを実行する

その為には

 1. maven-scm-pluginを使って、Subversionからソースのチェックアウト
 2. sql-maven-pluginを使って、DDLの実行
 3. maven-antrun-pluginを使って、ゴミファイルの削除

pom.xmlを書いてみた

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-scm-plugin</artifactId>
    <executions>
        <execution>
            <phase>process-test-resources</phase>
            <goals>
                <goal>checkout</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sql-maven-plugin</artifactId>
    <dependencies>
        <dependency>
            <groupId>oracle</groupId>
            <artifactId>oracle-jdbc-14</artifactId>
            <version>10.2.0.1.0</version>
        </dependency>
    </dependencies>
    <configuration>
        <driver>oracle.jdbc.driver.OracleDriver</driver>
         <url>jdbc:oracle:thin:@localhost:1521:</url>
         <username>hogehoge</username>
         <password>hogehoge</password>
         <settingsKeys>sensibleKey</settingsKeys>
    </configuration>
    <executions>
        <execution>
            <id>execute-ddl</id>
            <phase>process-test-resources</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <fileset>
                    <basedir>${basedir}</basedir>
                    <includes>
                        <include>target/checkout/*.ddl</include>
                    </includes>
                </fileset>
                <autocommit>true</autocommit>
                <onError>continue</onError>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <id>del</id>
            <phase>process-test-resources</phase>
            <configuration>
                <tasks>
                    <delete dir="target" />
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

不満点

 1. Antプラグインを使ってファイルを消している。他に良い方法はないのか?
 2. そもそもチェックアウトせずに、DDLを実行する方法はないのか?


誰か教えてください。