Explore Courses Blog Tutorials Interview Questions
0 votes
in Salesforce by (11.9k points)

The Question

I'm trying to use the Migration Tool (a custom ant library) on a linux box and can't for the life of me figure out how to get ant to see that library. What am I doing wrong?

The Error Message


/home/ec2-user/ant/ucp/build.xml:48: Problem: failed to create 

task or type antlib:com.salesforce:retrieve

Cause: The name is undefined.

The Background

I installed ant using yum install ant and then I dropped the Migration Tool (ant-salesforce.jar) into /usr/share/ant/lib. I'm able to see this library when I run ant -diagnostics, but none of the tasks for that library (should be seeing deploy, retrieve, etc.). I've uploaded a gist with the full output from ant -diagnostics.


 ANT_HOME/lib jar listing


ant.home: /usr/share/ant

ant-bootstrap.jar (19837 bytes)

ant-salesforce.jar (3293054 bytes)

ant.jar (1942059 bytes)

ant-launcher.jar (18418 bytes)

After lots of googling and manual reading I tried the following to no avail (NB: the above diagnostics is without any of the below changes). I know I'm missing something obvious :(

  1. Setting $ANT_HOME export ANT_HOME=/usr/share/ant
  2. Fiddling with permissions chmod +x /usr/share/ant/lib/salesforce-jar
  3. Fiddling with groups chown root:root /usr/share/ant/lib/salesforce-jar
  4. Passing in class with -lib ant -lib /usr/share/ant/lib/salesforce-jar retrieve ...
  5. Passing in lib folder with -lib ant -lib /usr/share/ant/lib retrieve ...
  6. Adding $ANT_HOME to $PATH export PATH=$PATH:$ANT_HOME/bin

1 Answer

0 votes
by (32.1k points)

Try keeping ant-salesforce.jar under /home/ec2-user/ant/ucp and then modify the taskdef element to look like this:

<taskdef resource="com/salesforce/antlib.xml" classpath="ant-salesforce.jar" />

Run your build again and see if things look better. Having the JAR in the same folder as build.xml will help you eliminate issues with permissions.

Related questions

Browse Categories