SubversionからファイルをチェックアウトするAntタスクを作成できる任意の方法に興味があります。コマンドラインからチェックアウトしたいだけです。 AntとSubversionでEclipseを使用してしばらく経ちますが、Eclipseに依存してすべてをまとめるので、AntとSubversionの知識は少し不足しています。
私はSvnAntを1つの解決策として見てきました。これはTigrisのSubclipseの一部です http://subclipse.tigris.org/svnant/svn.html 。正常に動作する可能性がありますが、取得できるのはNoClassDefFoundErrorsだけです。経験豊富な人にとっては、これはおそらく単純なAnt構成の問題のように見えますが、私はそれについて知りません。 svnant.jarとsvnclientadapter.jarをAnt libディレクトリにコピーしました。それから私は以下を実行しようとしました:
<?xml version="1.0"?>
<project name="blah">
<property environment="env"/>
<path id="svnant.classpath">
<pathelement location="${env.ANT_HOME}/lib"/>
<fileset dir="${env.ANT_HOME}/lib/">
<include name="svnant.jar"/>
</fileset>
</path>
<typedef resource="org/tigris/Subversion/svnant/svnantlib.xml" classpathref="svnant.classpath" />
<target name="checkout">
<svn username="abc" password="123">
<checkout url="svn://blah/blah/trunk" destPath="workingcopy"/>
</svn>
</target>
</project>
これに対して私は次の応答を受け取ります:
build.xml:17: Java.lang.NoClassDefFoundError: org/tigris/Subversion/javahl/SVNClientInterface
WindowsでSVN 1.7およびSvnAnt 1.3を実行していますXP 32ビット。
ポインタをありがとう!
SvnAntが機能しない場合は、いつでもexecを使用できます。
<exec executable="/usr/local/bin/svn">
<arg value="co" />
<arg value="svn://repository/url" />
<arg value="/destination/directory" />
</exec>
そのエラーから、おそらくクラスパスにもJavaHL jarが必要なようです(JavaHLはJava Subversion APIの言語バインディングです)。
このURLは役立つかもしれません: http://subclipse.tigris.org/wiki/JavaHL
それ以外の場合は、Antを使用してネイティブコマンドを実行できます(もちろん、OSに依存します)。
これがあなたに役立つかどうか見てみましょう、私はsvnjavahl.jar、svnClientAdapter.jarおよびsvnant.jarを$ ANT_HOME/libフォルダーにコピーしました。
次にxmlファイルで:
<path id="svnant.classpath">
<fileset dir="${ABSOLUTE-PATH-TO-ANT-HOME}/lib">
<include name="**/*.jar"/>
</fileset>
</path>
<typedef resource="org/tigris/Subversion/svnant/svnantlib.xml" classpathref="svnant.classpath" />
そして、チェックアウトのために..
<svn dateFormatter="yyyy-MM-dd HH:mm">
<checkout url="${MY-REPO-PATH}"
destpath="${checkout.dir}/MODULE-NAME"
....
</svn>
svnjavahl.jar
ファイルをlibフォルダーにコピーしていないため、エラーが発生していると思います。それをすれば、うまくいくはずです。
何かに気づきました。あなたは**/*.jar
ではなく1つのjarファイルを含んでいるため、svnjavahl.jar.
を見つけることができません。
Antでコマンドラインクライアントを使用する場合は、次のことを行う必要があります。
<svn username="abc" password="123" javahl="false" svnkit="false">
ANT_HOME/lib内のすべての.jarファイル(および${user.home}/.ant/lib
および他のいくつかの場所)は自動的に利用可能になるため、あなたの<typedef>
はクラスパスをまったく必要としません。
Svnantディストリビューションはバージョン1.7用に更新されていません。引き続きsvnant.jarを使用できますが、これらのjarをsvnant.1.3から置き換える必要があります
svnClientAdapter.jar
svnjavahl.jar
更新されたバージョン。これらを subclipse 1.8ディストリビューションから抽出し、名前を変更する必要もありませんでした。
org.tigris.Subversion.clientadapter.javahl_1.7.2.jar
org.tigris.Subversion.clientadapter_1.8.0.jar
このページは、これを実行するのに非常に役立ちました。最新バージョンでは、svnの設定を承認する方法は次のとおりです。
<svnSetting svnkit="true" javahl="false" id="svn.settings" />
つまり、SVNコマンド自体は次のようになります。
<svn refid="svn.settings">//Other commands</svn>
私は実際にはsvnkitモードが欲しかった。上記のライブラリは問題ありませんでしたが、以下も追加する必要がありました。
org.tmatesoft.sqljet_1.1.7.r1256_v20130327_2103.jar org.tmatesoft.svnkit_1.7.9.r9659_v20130411_2103.jar
org.tigris.Subversion.clientadapter.svnkit_1.7.9.2.jar
これらはすべて、言及されているサブクリップのダウンロードで入手できます。 tmatesoftには以下も必要です。
antlr-3.5.2-complete.jar
ここから入手可能: Antlr
私はほぼ同じ設定で同じ問題を抱えていました。
私はant install(debianに)に入れた2つのsvn * .jarを削除することで解決しました
/usr/share/ant/lib
ついさっき。 Antは複数のjarによって混乱していました。