Index > Antでsvnタスクはないのか?
Wed, July 15, 2009

Antでsvnタスクはないのか?

O'REILLY Book の Ant を読んでいたら、AntってJavaコードをコンパイルする以外にも いろいろなことできるのね。(いまさらすみません。)
ある種のケースでは、十分 Make の代わりとして使うこともできそうな気がしてきました。

cvsタスクというのがあるので、svnタスクはないものか調べてみたが、 標準やオプションのタスクには含まれていないようだ。(Ant1.6,Ant1.7.1)

しかし、 http://svnkit.com/kb/user-guide-ant.html に Ant から svn を使う方法が紹介されていた。

少しだけ変更が必要だったので、ここにメモしておきます。

Antから svn する

方法は、 svnkit というPureJavaで実装された subversion クライアントがあるのだが、それを使う。 svnkitはJavaのプログラムに過ぎないので、svn タスクとかいった特別なタスクではなく、 javaタスクを使って、svnkitを実行するだけ。

build.xml

参考にしたページでは、ganymed.jar が必要と書かれていたが、ganymed.jar が見つからなかった。 代わりに、trilead.jar を使ったところうまく作動しました。

<?xml version="1.0" encoding="UTF-8" ?>

<project default="main" >

    <target name="init">
        <property name="checkoutdir" value="__workdir"/>

        <property name="user" value="my-name"/>
        <property name="password" value="my-password"/>
        <property name="url" value="svn+ssh://foobar.net/my-repos" />

    </target>

    <target name="main" depends="init">
        <java classname="org.tmatesoft.svn.cli.SVN" dir="." fork="true">
                <arg line=" co --username ${user} --password ${password} ${url} ${checkoutdir} " />
            <classpath>
                <pathelement location="lib/trilead.jar" />
                <pathelement location="lib/svnkit.jar" />
                <pathelement location="lib/svnkit-cli.jar" />
            </classpath>
        </java>
    </target>

    <target name="clean" depends="init" >
        <delete dir="${checkoutdir}" />
    </target>


</project>

※user,password,url の各プロパティには適切な値を設定します。

クラスパスとして指定する trilead.jar,svnkit.jar,svnkit.jar は、 http://svnkit.com/download.php からダウンロードした org.tmatesoft.svn_1.3.0.standalone.nojna.zip に含まれています。 trilead.jar がないと ssh プロトコルが使えないようです。(詳しくは調べていません。)

 Twitter
follow me on Twitter
 Categories