ANT error: failed to create task or type antlib:com.salesforce:deploy

14,790

Solution 1

Resolved: I've reinstalled ant and now all seems to work OK. Weird thing.

Thanks for your support guys

Solution 2

Your syntax for sf:deploy is good. Matches mine.

Check your project definition. Are you setting the namespace of xmlns:sf to the right value?

Should be:

<project name="salesforce" default="deploy" basedir="." xmlns:sf="antlib:com.salesforce">

You could also check the permissions of ant-salesforce.jar.

And then check that the jar is not corrupted

jar -tf ant-salesforce.jar

Share:
14,790

Related videos on Youtube

Rodrigo Lanza
Author by

Rodrigo Lanza

Updated on October 27, 2022

Comments

  • Rodrigo Lanza
    Rodrigo Lanza over 1 year

    I've started to play with the Force.com Migration Tool. I want to use it from an ANT build file. I've created this one:

    <project name="Subversion to Org" default="deploy" basedir="." xmlns:sf="antlib:com.salesforce">
        <target name="deploy">
            <echo message="deploying from metadata" />
            <echo message="ANT_HOME=${ant.home}"/>
            <echo message="BASEDIR=${basedir}"/>
            <echo message="ANT_CORE_LIB=${ant.core.lib}"/>
            <echo message="JAVA_VERSION=${ant.java.version}"/>
            <echo message="ANT_LIBRARY_DIR=${ant.library.dir}"/>
            <echo message="classpath=${java.class.path}"/>
            <sf:deploy username="${properties.username}"
                            password="${properties.password}"
                            serverurl="${properties.url}"
                            deployroot="${properties.root}"
                            singlePackage="${properties.singlePackage}"
                            runAllTests="${properties.allTest}" />
            </target>
    </project>
    

    I've copied the ant-salesforce.jar in ant.lib folder. When I execute this file throught ANT I get this:

         Buildfile: build.xml
    
    deploy:
         [echo] deploying from metadata
         [echo] ANT_HOME=/usr/share/ant
         [echo] BASEDIR=/usr/share/tomcat6/.jenkins/jobs/Salesforce Deploy Test/workspace/deploy script
         [echo] ANT_CORE_LIB=/usr/share/java/ant-1.7.1.jar
         [echo] JAVA_VERSION=1.6
         [echo] ANT_LIBRARY_DIR=/usr/share/ant/lib
         [echo] classpath=/usr/share/java/ant.jar:/usr/share/java/ant-launcher.jar:/usr/share/java/jaxp_parser_impl.jar:/usr/share/java/xml-commons-apis.jar:/usr/lib/jvm/java/lib/tools.jar:/usr/share/ant/lib/ant.jar:/usr/share/ant/lib/ant-launcher.jar:/usr/share/ant/lib/ant-salesforce.jar:/usr/share/ant/lib/ant-bootstrap.jar
    
    BUILD FAILED
    /usr/share/tomcat6/.jenkins/jobs/Salesforce Deploy Test/workspace/deploy script/build.xml:16: Problem: failed to create task or type antlib:com.salesforce:deploy
    Cause: The name is undefined.
    Action: Check the spelling.
    Action: Check that any custom tasks/types have been declared.
    Action: Check that any <presetdef>/<macrodef> declarations have taken place.
    No types or tasks have been defined in this namespace yet
    
    This appears to be an antlib declaration.
    Action: Check that the implementing library exists in one of:
            -/usr/share/ant/lib
            -/root/.ant/lib
            -a directory added on the command line with the -lib argument
    
    
    Total time: 0 seconds
    

    It seems that ant-salesforce.jar file it isn't found, but it appears listed in the output. Any ideas?

    More info:

    Permissions check

    ls -al /usr/share/ant/lib
    total 3412
    drwxr-xr-x. 2 root root    4096 feb 12 15:36 .
    drwxr-xr-x. 4 root root    4096 feb 12 09:49 ..
    lrwxrwxrwx. 1 root root      28 feb 12 09:49 ant-bootstrap.jar -> ../../java/ant-bootstrap.jar
    lrwxrwxrwx. 1 root root      18 feb 12 09:49 ant.jar -> ../../java/ant.jar
    lrwxrwxrwx. 1 root root      27 feb 12 09:49 ant-launcher.jar -> ../../java/ant-launcher.jar
    -rwxrwxrwx. 1 root root 3483648 feb 12 12:58 ant-salesforce.jar
    

    Jar contents check:

    ...
    com/salesforce/ant/BulkRetrieveTask.class
    com/salesforce/ant/CompileAndTest$CodeNameElement.class
    com/salesforce/ant/CompileAndTest$RunTestsElement.class
    com/salesforce/ant/CompileAndTest.class
    com/salesforce/ant/Configuration.class
    com/salesforce/ant/ConnectionFactory.class
    com/salesforce/ant/DeployTask$CodeNameElement.class
    com/salesforce/ant/DeployTask.class
    com/salesforce/ant/DescribeMetadataTask.class
    com/salesforce/ant/ListMetadataTask.class
    com/salesforce/ant/RetrieveTask$PackageManifestParser.class
    com/salesforce/ant/RetrieveTask.class
    com/salesforce/ant/SFDCAntTask.class
    com/salesforce/ant/SFDCMDAPIAntTask.class
    com/salesforce/ant/SFDCMDAPIAntTaskRunner.class
    com/salesforce/ant/ZipUtil.class
    com/salesforce/antlib.xml
    ...
    

    antlib File contents (as expected):

    <antlib>
        <typedef name="compileAndTest" classname="com.salesforce.ant.CompileAndTest"/>
        <typedef name="deploy" classname="com.salesforce.ant.DeployTask"/>
        <typedef name="retrieve" classname="com.salesforce.ant.RetrieveTask"/>
        <typedef name="bulkRetrieve" classname="com.salesforce.ant.BulkRetrieveTask"/>
        <typedef name="listMetadata" classname="com.salesforce.ant.ListMetadataTask"/>
        <typedef name="describeMetadata" classname="com.salesforce.ant.DescribeMetadataTask"/>
    </antlib>
    

    Thanks in advance.

  • Rodrigo Lanza
    Rodrigo Lanza about 11 years
    Thanks for your help. I've checked your the namespace settings and I have the same as you. The jar permissions are now 777 but the problem persists. I've also checked the jar contents and the antlib file but all seems to be ok. I've updated the questions with this information.
  • Ian G
    Ian G about 7 years
    Can you specify what permission you changed and how? What OS?
  • Kivi
    Kivi about 4 years
    Where should we change the permission and exactly under which path the jar file ant-salesforce.jar is present ?