Friday, 26 October 2012

Using Ant To Deploy

In addition to the IDE, you can also use a script to deploy Apex.
Download the Migration Tool if you want to use a script for deploying Apex from a Developer Edition or sandbox organization to a production organization using Apache's Ant build tool. Migration Tool is a free resource provided by to support its users and partners but isn't considered part of our services for purposes of the Master Subscription Agreement.
To use the Migration Tool, do the following:
1.     Visit and install Java JDK, Version 6.1 or greater on the deployment machine.
2.     Visit and install Apache Ant, Version 1.6 or greater on the deployment machine. i found it here

3.     Set up the environment variables (such as ANT_HOMEJAVA_HOME, and PATH) as specified in the Ant Installation Guide at Dont forget setup the same variables in User and System environment variables. In windows right click on Computer > Properties > Advanced Settings > environment variables

4.     Verify that the JDK and Ant are installed correctly by opening a command prompt, and entering ant –version. Your output should look something like this:
Apache Ant version 1.7.0 compiled on December 13 2006
5.     Log in to Salesforce on your deployment machine. Click Your Name | Setup | Develop | Tools, then click Migration Tool.
6.     Unzip the downloaded file to the directory of your choice. The Zip file contains the following:
o    Readme.html file that explains how to use the tools
o    A Jar file containing the ant task: ant-salesforce.jar
§  A sample folder containing:
§  codepkg\classes folder that contains SampleDeployClass.cls and SampleFailingTestClass.cls
§  codepkg\triggers folder that contains SampleAccountTrigger.trigger
o    mypkg\objects folder that contains the custom objects used in the examples
o    removecodepkg folder that contains XML files for removing the examples from your organization
o    A sample file that you must edit, specifying your credentials, in order to run the sample ant tasks in build.xml
o    A sample build.xml file, that exercises the deploy and retrieveAPI calls
7.     Copy the ant-salesforce.jar file from the unzipped file into the ant lib directory. The ant lib directory is located in the root folder of your Ant installation.
8.     Open the sample subdirectory in the unzipped file.
9.     Edit the file:
§  Enter your Salesforce production organization username and password for the sf.username and sf.password fields, respectively.Note
o username you specify should have the authority to edit Apex.
o    If you are using the Migration Tool from an untrusted network, append a security token to the password. To learn more about security tokens, see “Resetting Your Security Token” in the Salesforce online help.
§  If you are deploying to a sandbox organization, change the sf.serverurl field to
10.   Open a command window in the sample directory.
11.   Enter ant deployCode. This runs the deployAPI call, using the sample class and Account trigger provided with the Migration Tool.
The ant deployCode calls the Ant target named deploy in the build.xml file.
<!-- Shows deploying code & running tests for package 'codepkg' -->
    <target name="deployCode">
      <!-- Upload the contents of the "codepkg" package, running the tests for just 1 class -->
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" deployroot="codepkg">
For more information on deploy, see Understanding deploy.
12.   To remove the test class and trigger added as part of the execution of ant deployCode, enter the following in the command window: ant undeployCode.
ant undeployCode calls the Ant target named undeployCode in the build.xml file.
<target name="undeployCode">
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl=
            "${sf.serverurl}" deployroot="removecodepkg"/>


  1. This comment has been removed by the author.

  2. Hi, want to add that we can deploy not only APEX but anything we want to production or other org. Especially it's cool when we need to deploy objects with a lot of fields.

    1. This comment has been removed by the author.

    2. If you change your package.xml and add other items such as

      Google doesnt like entering xml in these comments so Ive removed the angle brackets below

      members * members
      name ApexPage name
      members * members
      name ApexTrigger name
      members * members
      name CustomObject name

      So you can triggers and objects, of course you can add most things


Note: only a member of this blog may post a comment.