top / index / prev / next / target / source

2016-06-30 diary: [Force.com] Force.com Migration Tool Simple Sample

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

[Force.com] 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

登場キーワード


この日記について