Ant 移行ツールは Spring '24 で廃止されました。
代わりにSalesforceCLIを使用することができます。
移行ツールの導入
インストールは Ant 移行ツールガイド(Salesforce開発者ドキュメント)
を参照。
sampleフォルダをコピーし、各ファイルを編集して使用します。
build.xmlの入ったフォルダはant-salesforce.jarと同じディレクトリに格納する必要があります。
各ファイルの説明
- build.xml : Ant で実行される一連のコマンドを定義。
- build.properties : Salesforce の接続情報を設定。
- package.xml : 1 回の要求で取得またはリリースするコンポーネントを指定。
準備
sampleフォルダをコピペして以下の様に各ファイルを配置。
salesforce_ant_43.0
├── ant-salesforce.jar
├── Readme.html
└── sample
├── build.properties
├── build.xml
└── retrieveallpkg
└── package.xml
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"/>
<tstamp prefix="Datetime">
<format property="now" pattern="yyyyMMdd_HHmm" locale="en" />
</tstamp>
<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>
<!-- メタデータの取得 -->
<target name="retrieveall">
<mkdir dir="${sf.username}_${Datetime.now}"/>
<sf:retrieve
username="${sf.username}"
password="${sf.password}"
sessionId="${sf.sessionId}"
serverurl="${sf.serverurl}"
maxPoll="${sf.maxPoll}"
retrieveTarget="${sf.username}_${Datetime.now}"
unpackaged="retrieveallpkg/package.xml"/>
</target>
<!-- メタデータタイプ一覧の取得 -->
<target name="describeMetadata">
<sf:describeMetadata username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}"/>
</target>
</project>
package.xml の編集。取得するメタデータを指定する。持ってこれるメタデータの一覧は ant describeMetadata
で取得可能。
※標準オブジェクト、メールテンプレートなどは個別に指定しないと取得できないため、注意。
↓ 編集例。
retrieveallpkg/package.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<!-- メタデータ取得用package.xml -->
<types><members>*</members><name>InstalledPackage</name></types>
<types><members>*</members><name>CustomLabels</name></types>
<types><members>*</members><name>StaticResource</name></types>
<types><members>*</members><name>Scontrol</name></types>
<types><members>*</members><name>Certificate</name></types>
<types><members>*</members><name>AuraDefinitionBundle</name></types>
<types><members>*</members><name>LightningComponentBundle</name></types>
<types><members>*</members><name>ApexComponent</name></types>
<types><members>*</members><name>ApexPage</name></types>
<types><members>*</members><name>Queue</name></types>
<types><members>*</members><name>CaseSubjectParticle</name></types>
<types><members>*</members><name>ExternalDataSource</name></types>
<types><members>*</members><name>NamedCredential</name></types>
<types><members>*</members><name>ExternalServiceRegistration</name></types>
<types><members>*</members><name>Role</name></types>
<types><members>*</members><name>Group</name></types>
<types><members>*</members><name>GlobalValueSet</name></types>
<types><members>*</members><name>StandardValueSet</name></types>
<types><members>*</members><name>CustomPermission</name></types>
<types><members>*</members><name>CustomObject</name></types>
<types><members>*</members><name>ReportType</name></types>
<types><members>*</members><name>Report</name></types>
<types><members>*</members><name>Dashboard</name></types>
<types><members>*</members><name>AnalyticSnapshot</name></types>
<types><members>*</members><name>Layout</name></types>
<types><members>*</members><name>Document</name></types>
<types><members>*</members><name>CustomPageWebLink</name></types>
<types><members>*</members><name>Letterhead</name></types>
<types><members>*</members><name>EmailTemplate</name></types>
<types><members>*</members><name>QuickAction</name></types>
<types><members>*</members><name>FlexiPage</name></types>
<types><members>*</members><name>CustomTab</name></types>
<types><members>*</members><name>CustomApplicationComponent</name></types>
<types><members>*</members><name>CustomApplication</name></types>
<types><members>*</members><name>EmbeddedServiceConfig</name></types>
<types><members>*</members><name>EmbeddedServiceBranding</name></types>
<types><members>*</members><name>Flow</name></types>
<types><members>*</members><name>FlowDefinition</name></types>
<types><members>*</members><name>EventSubscription</name></types>
<types><members>*</members><name>EventDelivery</name></types>
<types><members>*</members><name>Workflow</name></types>
<types><members>*</members><name>AssignmentRules</name></types>
<types><members>*</members><name>AutoResponseRules</name></types>
<types><members>*</members><name>EscalationRules</name></types>
<types><members>*</members><name>ApprovalProcess</name></types>
<types><members>*</members><name>HomePageComponent</name></types>
<types><members>*</members><name>HomePageLayout</name></types>
<types><members>*</members><name>CustomObjectTranslation</name></types>
<types><members>*</members><name>GlobalValueSetTranslation</name></types>
<types><members>*</members><name>StandardValueSetTranslation</name></types>
<types><members>*</members><name>ApexClass</name></types>
<types><members>*</members><name>ApexTrigger</name></types>
<types><members>*</members><name>ApexTestSuite</name></types>
<types><members>*</members><name>Profile</name></types>
<types><members>*</members><name>PermissionSet</name></types>
<types><members>*</members><name>CustomMetadata</name></types>
<types><members>*</members><name>ProfilePasswordPolicy</name></types>
<types><members>*</members><name>ProfileSessionSetting</name></types>
<types><members>*</members><name>DataCategoryGroup</name></types>
<types><members>*</members><name>RemoteSiteSetting</name></types>
<types><members>*</members><name>CspTrustedSite</name></types>
<types><members>*</members><name>MatchingRules</name></types>
<types><members>*</members><name>DuplicateRule</name></types>
<types><members>*</members><name>CleanDataService</name></types>
<types><members>*</members><name>WaveApplication</name></types>
<types><members>*</members><name>WaveDataset</name></types>
<types><members>*</members><name>EclairGeoData</name></types>
<types><members>*</members><name>WaveLens</name></types>
<types><members>*</members><name>WaveDashboard</name></types>
<types><members>*</members><name>WaveXmd</name></types>
<types><members>*</members><name>WaveDataflow</name></types>
<types><members>*</members><name>WaveRecipe</name></types>
<types><members>*</members><name>CustomSite</name></types>
<types><members>*</members><name>ChannelLayout</name></types>
<types><members>*</members><name>ContentAsset</name></types>
<types><members>*</members><name>SharingRules</name></types>
<types><members>*</members><name>Community</name></types>
<types><members>*</members><name>ChatterExtension</name></types>
<types><members>*</members><name>CallCenter</name></types>
<types><members>*</members><name>ConnectedApp</name></types>
<types><members>*</members><name>AppMenu</name></types>
<types><members>*</members><name>DelegateGroup</name></types>
<types><members>*</members><name>SiteDotCom</name></types>
<types><members>*</members><name>NetworkBranding</name></types>
<types><members>*</members><name>BrandingSet</name></types>
<types><members>*</members><name>FlowCategory</name></types>
<types><members>*</members><name>LightningBolt</name></types>
<types><members>*</members><name>LightningExperienceTheme</name></types>
<types><members>*</members><name>SamlSsoConfig</name></types>
<types><members>*</members><name>CorsWhitelistOrigin</name></types>
<types><members>*</members><name>ActionLinkGroupTemplate</name></types>
<types><members>*</members><name>TransactionSecurityPolicy</name></types>
<types><members>*</members><name>SynonymDictionary</name></types>
<types><members>*</members><name>PathAssistant</name></types>
<types><members>*</members><name>LeadConvertSettings</name></types>
<types><members>*</members><name>PlatformCachePartition</name></types>
<types><members>*</members><name>TopicsForObjects</name></types>
<types><members>*</members><name>EmailServicesFunction</name></types>
<types><members>*</members><name>Settings</name></types>
<version>43.0</version>
</Package>
使用方法
- build.properties に Salesforce ユーザ名とパスワードを設定。
- コンソールで build.xml のあるディレクトリに移動する。
-
ant retrieveall
を実行する。 - build.xml があるディレクトリに、フォルダ
ユーザ名_yyyyMMdd_HHmm
が作成され、package.xml で指定したメタデータが取得される。