2010-03-08 2 views
14

Меня интересует любым способом, что я могу создать задачу Ant для проверки файлов из SubVersion. Я просто хочу сделать checkout из командной строки. Я уже давно использую Eclipse с Ant и SubVersion, но мне не хватает знаний Ant и SubVersion, поскольку я полагался на Eclipse, чтобы связать все это вместе.Как проверить из SVN с задачей ANT?

Я рассматривал SvnAnt как одно из решений, которое является частью Subclipse от Tigris по адресу 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 

Я бегу SVN 1.7 и SvnAnt 1.3 на Windows XP 32-бит.

Спасибо за любые указатели!

+0

http://stackoverflow.com/questions/16305315/the-svn-client-svnkit -is-not-available/16310312 # 16310312 –

ответ

7

Из-за этой ошибки, похоже, вам, вероятно, понадобится JavaHL jar на вашем пути к классу (JavaHL - это привязки языка Java для Subversion API). Вы один

Этот URL может помочь: http://subclipse.tigris.org/wiki/JavaHL

В противном случае вы можете использовать использовать Ant для запуска родной команды (но это сделало бы его ОС зависит, конечно).

3

Если вы пытаетесь получить Ant использовать клиент командной строки, вы, возможно, придется сделать следующее:

<svn username="abc" password="123" javahl="false" svnkit="false"> 
+1

Если я не устанавливаю атрибуты javahl или svnkit, тогда я получаю NoClassDefFoundError. Если я устанавливаю один или оба, то true или false, тогда я получаю «Не могу найти javahl, svnkit или командной строки svn client». Я пробовал все комбинации, с и без svnjavahl.jar по classpath. – Josh

+0

Если вы выполняете следующее в своем файле Ant, поддерживает ли PATH двоичный каталог SVN? user261840

+0

Вам необходимо либо иметь собственные привязки Java, работающие для подрывной работы с JavaHL, либо b) командную строку svn клиент доступен на вашем пути. Предложение в этом ответе работает для б). –

5

Давайте посмотрим, если это поможет вам, я скопировал 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 как я, следовательно, не могу найти ваш svnjavahl.jar.

23

Если вы не получаете SvnAnt работать, вы всегда можете использовать Exec:

<exec executable="/usr/local/bin/svn"> 
    <arg value="co" /> 
    <arg value="svn://repository/url" /> 
    <arg value="/destination/directory" /> 
</exec> 
+0

Отлично! Благодаря! Не знаете, в чем смысл svnAnt, если вы можете это сделать? – KOGI

+2

В теории вы хотите избежать в задачах муравьев, так как это менее кросс-платформенная совместимость. Но это не важно во всех случаях. –

+2

Это было лучшее решение в моем случае. Очень просто (просто установите клиент svn (Sliksvn в моем случае), сделайте точку PATH равным sliksvn/bin, и все. Svnant и javahl - это беспорядок ... – jmcollin92

0

У меня была почти такая же настройка, с той же проблемой.

Я решил его, удалив 2 SVN * .jar это, что я положил в мой муравей установки (на Debian) под

/usr/share/ant/lib 

ранее. Муравей был смущен несколькими банками.

3
  1. Все файлы .jar в ANT_HOME/Lib (и ${user.home}/.ant/lib и некоторые другие места) автоматически доступны, так что ваш <typedef> не нуждается в пути к классам вообще.

  2. Распространение svnant не обновлено для версии 1.7. Вы все еще можете использовать svnant.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 
    
+0

Действительно, это помогло мне. Если вы в 2012 году и получаете это ошибка, то это означает, что вы, вероятно, используете subversion 1.7, который еще не поддерживается дистрибутивом svnant. Поэтому просто добавьте две библиотеки сверху, и она должна работать. –

+0

2014 и по-прежнему не поддерживает ничего выше 1,6 от SVNAnt. Наверное, они используют CLI. –

0

Я нашел эту страницу очень полезно, чтобы получить это происходит. Для получения самой последней версии, которую я нашел, что утвержденный способ настройки параметров 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