我对任何方式感兴趣,我可以创建一个Ant任务来检出SubVersion中的文件。我“只是”想要从命令行进行结账。我已经使用Eclipse和Ant和SubVersion一段时间了,但是我的Ant和SubVersion知识有点缺乏,因为我依靠Eclipse将它们连接在一起。
我一直在关注SvnAnt作为一个解决方案,它是Tigris在http://subclipse.tigris.org/svnant/svn.html的Subclipse的一部分。它可能工作正常,但我得到的是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 XP 32位上运行SVN 1.7和SvnAnt 1.3。
感谢您的任何指示!
答案 0 :(得分:24)
如果你没有让SvnAnt工作,你总是可以使用exec:
<exec executable="/usr/local/bin/svn">
<arg value="co" />
<arg value="svn://repository/url" />
<arg value="/destination/directory" />
</exec>
答案 1 :(得分:7)
从该错误看,您似乎也需要类路径上的JavaHL jar(JavaHL是Subversion API的Java语言绑定)。你是
此网址可能有所帮助: http://subclipse.tigris.org/wiki/JavaHL
否则,您可以使用use Ant来运行本机命令(但这会使其依赖于操作系统)。
答案 2 :(得分: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.
答案 3 :(得分:3)
如果您尝试让Ant使用命令行客户端,则可能必须执行以下操作:
<svn username="abc" password="123" javahl="false" svnkit="false">
答案 4 :(得分:3)
ANT_HOME / lib(以及${user.home}/.ant/lib
和其他一些地方)中的所有.jar文件都是自动可用的,因此<typedef>
根本不需要类路径。
尚未针对1.7版更新svnant发行版。你仍然可以使用svnant.jar,但是你需要从svnant.1.3替换这些jar。
svnClientAdapter.jar
svnjavahl.jar
更新版本。我从subclipse 1.8发行版中提取了这些内容,甚至不必重命名它们:
org.tigris.subversion.clientadapter.javahl_1.7.2.jar
org.tigris.subversion.clientadapter_1.8.0.jar
答案 5 :(得分:0)
我的设置几乎相同,问题相同。
我通过删除2个svn * .jar来解决这个问题,我将在我的ant安装中(在debian上)放在
下/usr/share/ant/lib
更早。 Ant被多个罐子混淆了。
答案 6 :(得分: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
这些都可以在上面提到的subclipse下载中找到。 tmatesoft还需要:
ANTLR-3.5.2-complete.jar
从这里可以获得: Antlr