概述
Ant for salesforce
简介:
- Ant是Java的生成工具,是Apache的核心项目;
- Ant类似于Unix中的Make工具,都是用来编译、生成;
- Ant是跨平台的,而Make不能;
- Ant的主要目的就是把你想做的事情自动化,不用你手动一步一步做,因为里面内置了javac、java、创建目录、复制文件等功能,所以可以直接点击Ant文件,即可编译生成你的项目。
下载地址:http://ant.apache.org/bindownload.cgi
Ant配置
无论我们是用这个工具来处理什么,比如java程序可能用到,salesforce迁移等等场景,我们首先要做的,是将ant的使用环境配置好。
- 在Ant安装之前需要安装好JDK,并配置好JAVA_HOME;
- 新建环境变量ANT_HOME:值为ANT的主目录;
- 在path中配置%ANT_HOME%/bin;
- 配置完成之后,打开命令行,输入ant,当出现“Buildfile: build.xml does not exist! Build failed”时说明配置完成;
Ant for salesforce
业务场景:客户目前使用的org将要到期了,我们需要将系统中所有的对象,字段,功能,审批等等等。 都要重新刷到一个全新并且跟当前org无关的环境中。当然我们可以使用Eclipse来操作,其实操作原理类似,只不过我更习惯使用ant这个工具来做。要我总结的话就是,方便,快速,暴力。
废话不多少,我们直接看工具该如何使用。
准备工作:
- 下载安装。
- 配置好环境变量,能够正确执行指令返回结果。
- 准备好ant-salesforce.jar 这个jar包是连接salesforce环境的jar包。
- 配置好build.xml文件(类似于java项目中的xml文件,告诉该怎么加载或者该如何执行)下文会贴出能正常使用的一个build.xml。有兴趣的可以再深入研究下。
- 配置好bulid.properties文件(连接salesforce环境Username,Password等)
- 配置好package.xml 文件(该从salesforce环境中down哪些,该部署哪些东西到需要的环境)
- 执行retrieve 指令,下载到本地环境
- 执行deploy 指令,部署至需要的环境中。
build.xml
注:上图是我的build.xml配置文件,如果使用的话,需要跟我这边的文件夹保持一致。文章末尾我会贴出来。
<project name="Sample usage of Salesforce Ant tasks" default="test" basedir="." xmlns:sf="antlib:com.salesforce">
<property file="build.properties"/>
<property environment="env"/>
<!-- Setting default value for username, password and session id properties to empty string
so unset values are treated as empty. Without this, ant expressions such as ${sf.username}
will be treated literally.
-->
<condition property="sf.username" value=""> <not> <isset property="sf.username"/> </not> </condition>
<condition property="sf.password" value=""> <not> <isset property="sf.password"/> </not> </condition>
<condition property="sf.sessionId" value=""> <not> <isset property="sf.sessionId"/> </not> </condition>
<taskdef resource="com/salesforce/antlib.xml" uri="antlib:com.salesforce">
<classpath>
<pathelement location="../ant-salesforce.jar" />
</classpath>
</taskdef>
<!-- Shows retrieving code; only succeeds if done after deployCode -->
<target name="retrieve">
<mkdir dir="retrieveSource"/>
<!-- Retrieve the contents listed in the file codepkg/package.xml into the codepkg directory -->
<sf:retrieve username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="retrieveSource" unpackaged="retrieve/package.xml"/>
</target>
<!-- Shows check only; never actually saves to the server -->
<target name="deploy">
<sf:deploy username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="retrieveSource" rollbackOnError="true"/>
</target>
<!-- Shows check only; never actually saves to the server -->
<target name="remove">
<sf:deploy username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="remove"/>
</target>
</project>
bulid.properties
注意:需要连接的环境,下面要注意login和test的区别。看是什么样的环境。你自己环境的username 和 password
# build.properties
#
# Specify the login credentials for the desired Salesforce organization
sf.username = xxxx@liningchao.com
sf.password = xxxxx
#sf.sessionId = <Insert your Salesforce session id here. Use this or username/password above. Cannot use both>
#sf.pkgName = <Insert comma separated package names to be retrieved>
#sf.zipFile = <Insert path of the zipfile to be retrieved>
#sf.metadataType = <Insert metadata type name for which listMetadata or bulkRetrieve operations are to be performed>
# Use 'https://login.salesforce.com' for production or developer edition (the default if not specified).
# Use 'https://test.salesforce.com for sandbox.
sf.serverurl = https://login.salesforce.com
sf.maxPoll = 200
# If your network requires an HTTP proxy, see http://ant.apache.org/manual/proxy.html for configuration.
#
package.xml
retrieve 里的package.xml 配置文件,也就是需要down的东西或者说需要部署的东西。我配置的这个不是全的,只是一部分org里面的东西,如果你想要更多,开发人员的话可以通过sublime或者eclipse 找到项目down下来的package.xml(它的生成是根据项目的配置信息生成的,拿sublime举例:在setting中如果配置了”CustomObject” 那么down下来的项目配置文件中就会有CustomObject。 其他的同理)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>*</members>
<name>ApexClass</name>
</types>
<types>
<members>*</members>
<name>ApexPage</name>
</types>
<types>
<members>*</members>
<name>ApexTrigger</name>
</types>
<types>
<members>*</members>
<name>AuraDefinitionBundle</name>
</types>
<types>
<members>*</members>
<name>StaticResource</name>
</types>
<types>
<members>*</members>
<name>CustomTab</name>
</types>
<types>
<members>*</members>
<name>CustomLabels</name>
</types>
<types>
<members>*</members>
<name>FlexiPage</name>
</types>
<version>38.0</version>
</Package>
完成上面三个配置后,打开黑色的控制台。注意:首先要进入你的文件夹,然后执行ant -p build.xml (这个步骤通常可以省略),然后执行ant retrieve, 看到成功后。切换bulid.properties文件中的环境,(也就是要部署的环境的配置信息)。然后执行 ant deploy。 就可以从控制台中看到部署过程,当然,部署的过程,也可以通过目标Org的开发状态能跟踪到。
Tips:
- 过程中可能会遇到一些错误,调试的办法只能是一个一个解决,有的可能是因为不同的Org环境导致的等等等。
- 如果发现不能解决的错误,建议大家直接去修改down在本地的xml文件。
- 我也没有过多的深入研究,如果有好的idea可以留言交流,以上仅供大家做参考使用。
- 最后贴出我的一个目录结构
最后
以上就是眼睛大小丸子为你收集整理的Ant for salesforce的全部内容,希望文章能够帮你解决Ant for salesforce所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复