web-dev-qa-db-ja.com

ANTタスクでSVNからチェックアウトする方法は?

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ビット。

ポインタをありがとう!

16
Josh

SvnAntが機能しない場合は、いつでもexecを使用できます。

<exec executable="/usr/local/bin/svn">
    <arg value="co" />
    <arg value="svn://repository/url" />
    <arg value="/destination/directory" />
</exec>
25
JW.

そのエラーから、おそらくクラスパスにもJavaHL jarが必要なようです(JavaHLはJava Subversion APIの言語バインディングです)。

このURLは役立つかもしれません: http://subclipse.tigris.org/wiki/JavaHL

それ以外の場合は、Antを使用してネイティブコマンドを実行できます(もちろん、OSに依存します)。

7
Wilhelm Kleu

これがあなたに役立つかどうか見てみましょう、私は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.を見つけることができません。

5
omermuhammed

Antでコマンドラインクライアントを使用する場合は、次のことを行う必要があります。

<svn username="abc" password="123" javahl="false" svnkit="false"> 
3
Dingo
  1. ANT_HOME/lib内のすべての.jarファイル(および${user.home}/.ant/libおよび他のいくつかの場所)は自動的に利用可能になるため、あなたの<typedef>はクラスパスをまったく必要としません。

  2. 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
    
3
Simon Parker

このページは、これを実行するのに非常に役立ちました。最新バージョンでは、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

0
PeterS

私はほぼ同じ設定で同じ問題を抱えていました。

私はant install(debianに)に入れた2つのsvn * .jarを削除することで解決しました

/usr/share/ant/lib

ついさっき。 Antは複数のjarによって混乱していました。

0
nasty pasty