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 プロトコルが使えないようです。(詳しくは調べていません。)
