Ответ 1
Если вы не используете SvnAnt, вы всегда можете использовать exec:
<exec executable="/usr/local/bin/svn">
<arg value="co" />
<arg value="svn://repository/url" />
<arg value="/destination/directory" />
</exec>
Мне нравится , что я могу создать задачу Ant для проверки файлов из SubVersion. Я просто хочу сделать checkout из командной строки. Я использую 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.
Спасибо за любые указатели!
Если вы не используете 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. Сделайте это, и он должен работать.
Просто что-то заметил, вы включили ONE jar, а не **/*.jar
, как я, поэтому он не может найти ваш svnjavahl.jar.
Если вы пытаетесь использовать Ant для использования клиента командной строки, вам может потребоваться сделать следующее:
<svn username="abc" password="123" javahl="false" svnkit="false">
Все файлы .jar в ANT_HOME/lib (и ${user.home}/.ant/lib
и некоторые другие места) автоматически доступны, поэтому ваш <typedef>
не нуждается в пути к классам.
Распространение 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
У меня была почти такая же настройка, с той же проблемой.
Я разрешил его, удалив 2 svn *.jar, чтобы установить мою установку ant (на debian) в
/usr/share/ant/lib
раньше. ant был сбит несколькими банками.
Я нашел эту страницу очень полезной для этого. В последней версии я обнаружил, что утвержденный способ настройки параметров 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