我对任何可以创建Ant任务以从SubVersion签出文件的方式感兴趣.我"只是"想要从命令行进行结账.我已经使用Eclipse和Ant和SubVersion一段时间了,但我的Ant和SubVersion知识有点缺乏,因为我依靠Eclipse将它们连接在一起.
我一直在寻找SvnAnt作为一个解决方案,它是来自Tigris的Subclipse的一部分,位于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>
Run Code Online (Sandbox Code Playgroud)
我得到以下回复:
build.xml:17: java.lang.NoClassDefFoundError: org/tigris/subversion/javahl/SVNClientInterface
Run Code Online (Sandbox Code Playgroud)
我在Windows XP 32位上运行SVN 1.7和SvnAnt 1.3.
感谢您的任何指示!
JW.*_*JW. 24
如果你没有让SvnAnt工作,你总是可以使用exec:
<exec executable="/usr/local/bin/svn">
<arg value="co" />
<arg value="svn://repository/url" />
<arg value="/destination/directory" />
</exec>
Run Code Online (Sandbox Code Playgroud)
从该错误看,您可能也需要在类路径上使用JavaHL jar(JavaHL是Subversion API的Java语言绑定).你一个
此URL可能有所帮助:http: //subclipse.tigris.org/wiki/JavaHL
否则,您可以使用使用Ant来运行本机命令(但这会使其依赖于操作系统).
让我们看看这可以帮助你,我复制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" />
Run Code Online (Sandbox Code Playgroud)
然后,退房..
<svn dateFormatter="yyyy-MM-dd HH:mm">
<checkout url="${MY-REPO-PATH}"
destpath="${checkout.dir}/MODULE-NAME"
....
</svn>
Run Code Online (Sandbox Code Playgroud)
我认为您收到错误是因为您没有将svnjavahl.jar文件复制到lib文件夹中.这样做,它应该工作.
刚注意到一些东西,你包括一个罐子,**/*.jar不像我一样,所以它找不到你的svnjavahl.jar.