我已经做了很多svn/ant设置,但这次不知道出了什么问题。
使用Linux、
svn 1.6.6
ant 1.8.2
svnant 1.3.1
我已经将svnant jar文件复制到$ANT_HOME/lib
中
top@secret:~/apps/apache-ant-1.8.2/lib$ ls -l
-rw-r--r-- 1 root root 244831 2011-06-23 07:55 ganymed.jar
-rw-r--r-- 1 root root 948100 2011-06-23 07:55 jna.jar
-rw-r--r-- 1 root root 76383 2011-06-23 07:55 svnant.jar
-rw-r--r-- 1 root root 215757 2011-06-23 07:55 svnClientAdapter.jar
-rw-r--r-- 1 root root 89412 2011-06-23 07:55 svnjavahl.jar
等等。。。
我的构建文件指定:
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" />
但每当我执行时
<target name="update">
<svn>
<update dir="."/>
</svn>
</target>
我得到了可怕的:
update:
[svn] Missing 'javahl' dependencies on the classpath !
BUILD FAILED
/home/top/apps/utils/build.xml:26: Cannot find javahl, svnkit nor command line svn client
你知道我做错了什么吗?
我认为将svnant jar复制到$ANT_HOME/lib中就足够了?
Javahl方式总是需要某种依赖于操作系统的驱动程序。这是很难设置,我不建议使用它
您应该尝试使用svnkit
:
<svn svnkit="true">
这使用了纯java库,但需要svnkit.jar
位于类路径中。
参考文献:
- http://subclipse.tigris.org/svnant/svn.html
- http://subclipse.tigris.org/wiki/JavaHL
我只使用回退/命令行版本,其中svn可执行文件位于PATH中。在大多数情况下,以下设置都不会出现问题:
<svn svnkit="false" javahl="false">
注意:这些设置适用于svnant 1.31及之前版本。由于版本1.32,您可以使用<svnSetting />
,这在另一个答案
自svnant 1.3.2
起,属性svnkit
和javahl
已被弃用。另一种选择是使用svnSetting
任务。
将此任务放在构建文件中的某个位置:
<svnSetting
svnkit="false"
javahl="false"
id="svn.settings"/>
然后,当您调用svn
任务时,可以这样使用它(注意refid
属性):
<target name="doingSomethingAwesome">
<svn refid="svn.settings">
<!-- do something -->
</svn>
</target>
希望这对我有帮助。
参考
如果您得到"找不到javahl、svnkit或命令行svn客户端"那么您必须确保svn路径是否已设置:例如:path=c:\svn\bin;