読者です 読者をやめる 読者になる 読者になる

sql-maven-pluginでencodingを指定したい! (完結編)

maven

http://d.hatena.ne.jp/nobeans/20080423/1208914200 の続き。


↓リビジョン5535で、dantran氏がencodingを公開パラメータに変更したようだ。


コミットログは↓。

5355 annotated / raw | Diffs: previous, other | Lines: 1012 ( +14, -2 )
Created: 2007-10-16 00:21:08 -0500 (6 months ago) | Author: dantran | Changeset: 5355
MOJO-849: expose encoding property
Properties
svn:eol-style = native
svn:keywords = "Author Date Id Revision"
FishEye: history mojo/trunk/mojo/sql-maven-plugin/src/main/java/org/codehaus/mojo/sql/SqlExecMojo.java

ってことで、2007-10-16に対応したのか。
んで、その後plugin.xmlの再生成を忘れたかなんかして、古いままだと。


いや、もしかして、1.0リリースの後に、この対処をしたまま、まだ次の1.1がリリースされていないだけ?


バグチケットも見つけた。

Created: 12/Jul/07 03:02 AM Updated: 04/Jan/08 03:06 PM
[#MSQL-4] Fix encoding property - jira.codehaus.org

アノテーションつけたということで、クローズされちゃったね。
案外最近なのか...。単に1.1リリースを待てってことなのかなぁ。


ということは....、SNAPSHOTが公開されてるリポジトリから1.1-SNAPSHOTをとってくればいいってこと?


Codehausのスナップショットリポジトリを見つけた。
http://hirobiro.dip.jp/pukiwiki/index.php?Maven2%2FSNAPSHOT


んで、色々試してみた結果....


できた!!!!!


手元のpom.xmlをいじるだけでOKなので、こっちの方がいいな。


ってことで、まとめます。

対処方法のまとめ

pom.xmlのproject要素直下に以下のリポジトリを追加する。

     <pluginRepositories>
       <pluginRepository>
         <id>Codehaus Snapshots</id>
         <url>http://snapshots.repository.codehaus.org/</url>
       </pluginRepository>
     </pluginRepositories>

process-resourcesフェーズか、process-test-resourcesフェーズに、sql-maven-pluginを仕掛ける。

  <build>
    <finalName>Database initializing</finalName>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>sql-maven-plugin</artifactId>
        <!-- 明示指定しなくてもバージョンが新しい1.1-SNAPSHOTが使わるが、心配であれば明示指定する -->
        <!-- <version>1.1-SNAPSHOT</version> -->
        <dependencies>
          <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>10.3.2.1</version>
          </dependency>
        </dependencies>
        <configuration>
          <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
          <url>jdbc:derby:db/sample;create=true</url>
          <encoding>utf-8</encoding><!-- SQLファイルのエンコーディングを指定する!! -->
          <autocommit>true</autocommit>
        </configuration>
        <executions>
          <execution>
            <id>recreate-db</id>
            <phase>process-resources</phase><!-- 対象フェーズを指定する -->
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <fileset>
                <basedir>${basedir}</basedir>
                <includes>
                  <include>db/01-dropdb_derby.sql</include>
                  <include>db/02-createdb_derby.sql</include>
                  <include>db/03-datas_derby.sql</include>
                </includes>
              </fileset>
              <onError>continue</onError>
              <skip>false</skip>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

これだけでOK.


ハマってたところからの最小手順でいえば、pluginRepositoriesを追加することだけだったと.....orz


何はともあれ、これで標準的なmaven2の環境があれば、「みんな、mvn jetty:runするだけでいいんだぜ!」といえるようになった。


やった!!!