Force.com Migration Tool Simple Sample
Salesforce の Force.com Migration Tool を使うときの、とてのシンプルなサンプルです。defPackage というディレクトリに 必要な package.xml が配置されていることを前提とします。
<project name="Force.com Migration Tool Simple Sample by Igapyon" basedir="." xmlns:sf="antlib:com.salesforce"> <!-- build.properties に必要な設定が実施済みであることを前提とします。 --> <property file="build.properties"/> <property environment="env"/> <!-- 参考にした Migration Tool のシンプルサンプルに元から付属する記述 --> <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> <!-- このディレクトリ配下の lib フォルダに jar ファイルが配置済みであることを前提とします。 --> <pathelement location="./lib/ant-salesforce.jar" /> </classpath> </taskdef> <!-- 自分の現在作業分をサーバーから取得します。 --> <!-- このターゲットでは、対象ディレクトリを一旦削除する記述が含まれます。 --> <!-- このAnt build.xml ファイルは、開発対象ファイルが(内容がほぼ無くても良いから)SFDC上に存在していることを開始前提としています。 --> <target name="get-myTask"> <echo>自分の現在作業分をサーバーから取得します。</echo> <mkdir dir="myTask"/> <echo>1.取得に先立ち、取得先ディレクトリを一旦掃除します。</echo> <delete verbose="true"> <fileset dir="myTask" includes="**/*.cls,**/*.component,**/*.page,**/*.xml" /> </delete> <echo>2.実際の取得を実施します。</echo> <sf:retrieve username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="myTask" unpackaged="defPackage/package-myTask.xml"/> <echo>3.自分の現在作業分について、サーバからの取得が完了しました。</echo> </target> <!-- 自分の現在作業分をサーバーへ配備。 --> <target name="put-myTask"> <echo>自分の現在作業分をサーバーにデプロイします。</echo> <echo>1.デプロイに先立ち、デプロイ予定物をサーバーからバックアップ取得します。</echo> <mkdir dir="myTask.bak"/> <sf:retrieve username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="myTask.bak" unpackaged="defPackage/package-myTask.xml"/> <echo>2.自分の現在作業分のサーバーへのデプロイを実施します。</echo> <sf:deploy username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="myTask" rollbackOnError="true" testLevel="RunSpecifiedTests"> <!-- 必要に応じて実行テストクラスを書き換え。 --> <runTest>MyControlFile1</runTest> </sf:deploy> <echo>3.自分の現在作業分のサーバーへのデプロイが完了しました。</echo> </target> <!-- 自分の担当範囲のソースコード一式をサーバーから取得。 --> <target name="get-myScope"> <echo>自分の担当範囲分のすべてをサーバーから取得します。</echo> <mkdir dir="myScope"/> <echo>1.自分の担当範囲分のすべてをサーバーから取得開始します。</echo> <sf:retrieve username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="myScope" unpackaged="defPackage/package-myScope.xml"/> <echo>2.自分の担当範囲分のすべてをサーバーから取得完了しました。</echo> <echo>3.自分の管理下の SCM と取得した内容との差分を把握して、場合によりシンクロおよびコミットしてください。</echo> </target> <!-- プロジェクトに関わるすべてのファイルをサーバーから取得。 --> <target name="get-projectAll"> <echo>プロジェクトに関わるすべてのファイルをサーバーから取得します。</echo> <mkdir dir="projectAll"/> <sf:retrieve username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="projectAll" unpackaged="defPackage/package-projectAll.xml"/> </target> </project>
build.properties
build.xml ファイルと同じフォルダに、以下のような build.properties ファイルを準備します。
# Specify the login credentials for the desired Salesforce organization sf.username = <Insert your Salesforce username here> sf.password = <Insert your Salesforce password here> # 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 = 20