The svn client 'svnkit' is not available

I have been using svnant 1.3.0 to create tags from branches in my SVN repository. Now I have upgraded from SVN 1.6 to 1.7 and there is no released svnant binary that supports it. But I have downloaded the svnant 1.4 source from and build a svnant.jar.

I know that svnant has a few dependecies and I have the following: svnkit 1.7.5 (from svnant repository), svnjavahl (from svnant repository), svnClientAdapter (from svnant repository), svnkit-cli (from svnant repository), trilead-ssh 1.0 (from maven repository) and ganymed-ssh.jar build 210 (from maven repository).

  • Ivy Custom Resolvers for Git or TFS
  • How to setup Jenkins with Junit
  • Ant with Hudson
  • How to get Jenkins working with binaries from a subfolder of the root user?
  • SVN Ant Update example
  • Hudson/Jenkins PMD Configuration
  • I use IVY for dependency management and have added all the above jars (except for the two from maven repository) to my Artifactory installation. In my IVY dependency file I retrieve the jars like so:

    <dependency org="svnant" name="svnant" rev="1.4.0" conf="test->default" />
    <dependency org="svnkit" name="svnkit" rev="1.7.5" conf="test->default" />
    <dependency org="svnjavahl" name="svnjavahl" rev="1.4.0" conf="test->default" />
    <dependency org="svnClientAdapter" name="svnClientAdapter" rev="1.4.0" conf="test->default" />
    <dependency org="svnkit-cli" name="svnkit-cli" rev="1.7.5"/>
    <dependency org="trilead-ssh2" name="trilead-ssh2" rev="1.0.0" conf="test->default"/>
    <dependency org="ch.ethz.ganymed" name="ganymed-ssh2" rev="build210" conf="test->default" />

    All jars are retrieved correctly. I try to do a branch2tag copy like so (The retrieveIVY target retrieves the jar files described above):

    <target name="create-tag" depends="retrieveIVY">
        <taskdef classpathref="test.classpath.dep" resource="net/sf/antcontrib/" />
        <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="test.classpath.dep" />
        <echo message="Creating tag ${env.tag_name}" />
        <svnSetting username="${user}" password="${password}" client="svnkit" />
            <copy srcUrl="[srcUrl]" destUrl="[destUrl]" message="${env.tag_name}" />

    This worked with svnant 1.3.0 and SVN 1.6 (apart from the svnSetting tag). But using the new jar versions I get the following error:

    The svn client 'svnkit' is not available !
    at org.tigris.subversion.svnant.SvnClientType.checkAvailability(
    at org.tigris.subversion.svnant.SvnClientType.createClient(
    at org.tigris.subversion.svnant.SvnFacade.getClientAdapter(
    at org.tigris.subversion.svnant.SvnTask.executeImpl(
    at org.tigris.subversion.svnant.SvnTask.execute(
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(
    Caused by: org.tigris.subversion.svnclientadapter.SVNClientException: SVNKit client adapter is not available
    at org.tigris.subversion.svnclientadapter.svnkit.SvnKitClientAdapterFactory.setup(
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.tigris.subversion.svnant.SvnClientType.invoke(
    at org.tigris.subversion.svnant.SvnClientType.checkAvailability(
    ... 19 more

    Does someone have an idea that could solve this problem?

  • Using Git & SVN with Git being the central server
  • How commit all files except one with SVN
  • git-svn not a git command?
  • How to make SVN ADD ignore binaries
  • Google Code svn migration
  • Is `hg pull --rebase` analogous to `svn update`?
  • One Solution collect form web for “The svn client 'svnkit' is not available”

    I would advise using the svnkit java classes directly instead of struggling with the svnant task. This approach, combined with a macrodef, will result in a similar but more reliable solution.

    <project name="build" default="checkout" xmlns:ivy="antlib:org.apache.ivy.ant">
        <macrodef name="svn-checkout">
            <attribute name="src"/>
            <attribute name="dest"/>
                <mkdir dir="@{dest}"/>
                <java classname="org.tmatesoft.svn.cli.SVN" dir="@{dest}" fork="true" classpathref="build.path">
                    <arg value="--non-interactive"/>
                    <arg line="--username ${svn.user}"/>
                    <arg line="--password ${svn.pass}"/>
                    <arg value="checkout"/>
                    <arg value="@{src}"/>
        <target name="resolve" description="Resolve 3rd party dependencies">
            <ivy:cachepath pathid="build.path">
                <dependency org="org.tmatesoft.svnkit" name="svnkit-cli" rev="1.7.8" conf="default"/>
        <target name="checkout" depends="resolve" description="Pull code from SCM repository">
            <svn-checkout src="" dest="build/subversion"/>
        <target name="clean" description="Cleanup build files">
            <delete dir="build"/>
        <target name="clean-all" depends="clean" description="Cleanup and purge ivy cache">


    • This example uses the ivy cachepath task to download the dependencies into a local classpath reference called “build.path”.
    Git Baby is a git and github fan, let's start git clone.