初心者向けと書いてますが、ほとんど自分が普段使う用。
これから Force.com Migration Tool (Force.com 移行ツール)を使ってみようという人にも参考になるかも。
Force.com Migration Tool には最初からサンプルの build.xml
が入ってるけど、
- 正直あんまり使わないなーと思うコマンドがある
- 日本語で解説している記事がほぼない
ので、整理しつつ日本語でコメントしてみた。
基本的な使い方は README を見てください。
ディレクトリ構成
├── build.properties ├── build.xml ├── codepkg │ └── package.xml ├── removecodepkg │ ├── destructiveChanges.xml │ └── package.xml └── retrievecodepkg └── package.xml
build.xml
<project name="Salesforce Ant tasks" default="deployCode" basedir="." xmlns:sf="antlib:com.salesforce"> <property file="build.properties"/> <property environment="env"/> <!-- コードを組織から取得 --> <target name="retrieveCode"> <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="retrievecodepkg" unpackaged="retrievecodepkg/package.xml"/> </target> <!-- コードを組織にデプロイ --> <target name="deployCode"> <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="codepkg"> </sf:deploy> </target> <!-- コードを組織から削除 --> <!-- deployRoot に指定したディレクトリ内に package.xml と destructiveChanges.xml を置く --> <target name="removeCode"> <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="removecodepkg"/> </target> <!-- コードをデプロイし、テストを実行する --> <target name="deployCodeAndRunTests"> <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="codepkg" runAllTests="true" logType="Debugonly"/> </target> <!-- コードがデプロイ可能かどうか、チェックのみ行う --> <target name="deployCodeCheckOnly"> <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="codepkg" checkOnly="true"/> </target> <!-- メタデータの一覧を表示する ref. http://qiita.com/zaki-yama/items/4b66b86900b604794f3d --> <target name="describeMetadata"> <sf:describeMetadata username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}"/> </target> <!-- 特定の sf.metadataType のメタデータ情報を取得する (sf.metadataType は build.properties に記述する) --> <target name="listMetadata"> <sf:listMetadata username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" metadataType="${sf.metadataType}"/> </target> </project>
retrieve と deploy でディレクトリを分けるべきか?
ここは好みで。
私はちょっとしたプログラムを書いてデプロイする時にディレクトリを分けたいと思ったので
組織から retrieve したものと混ざらないようそうした。