Как оформить заказ из SVN с заданием ANT? - PullRequest
16 голосов
/ 08 марта 2010

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

Я смотрю на 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 в 32-разрядной версии Windows XP.

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

Ответы [ 7 ]

24 голосов
/ 10 марта 2010

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

<exec executable="/usr/local/bin/svn">
    <arg value="co" />
    <arg value="svn://repository/url" />
    <arg value="/destination/directory" />
</exec>
7 голосов
/ 08 марта 2010

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

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

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

5 голосов
/ 10 марта 2010

Посмотрим, поможет ли это вам, я скопировал 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.

3 голосов
/ 05 января 2012
  1. Все файлы .jar в ANT_HOME / lib (и ${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 голосов
/ 08 марта 2010

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

<svn username="abc" password="123" javahl="false" svnkit="false"> 
0 голосов
/ 01 октября 2014

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

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

Я решил это, удалив 2 svn * .jar, которые я поместил в мою установку ant (на debian) в

/usr/share/ant/lib

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...