これは、最近のつらい経験から言えます。
パッケージ化: これは、Ant と Eclipse の両方が依存しているメタデータ API よりも前の非常に古い方法です。私たちの経験では、パッケージ化の唯一の利点は、プロジェクトを定義することです。Eclipse を使用している場合 (私たちも使用しており、推奨しています)、プロジェクトを特定のパッケージに基づくものとして定義できます。パッケージに新しいコンポーネントを追加することを覚えている限り、プロジェクトはハングアップします
ところで、しばらくの間私たちを当惑させたのは、package の多くの用途です。次の点に注意してください。
インストール済みパッケージ: これらは管理対象および管理対象外のフレーバーで提供され、実際には、SFDC ボードの最近の投稿によると、ISV がさまざまな未知の組織に「そこにある」ものをデプロイするためのものです。管理パッケージと未管理パッケージの両方に制限があるため、組織内での開発から本番への展開には不適切であり、必要がありません。また、カスタム開発を行っていて、大規模な匿名ベースにコードを配布するつもりがない場合にも使用できません。
インストールされていないパッケージ: これは、Web UI で [パッケージ] をクリックしたときに表示されるものです。私たちが「開発パッケージ」と呼ぶこともあるこれらは、プロジェクト定義をまとめる便利な方法のようです。
とにかく、私が目指している結論は、私たちのチーム (ISV ではなくカスタム開発) は、いかなる形式のパッケージも必要としないということです。
Eclipse と Ant の両方の他の形式のデプロイメントは、Metadata API に依存しています。理論的には、それらはまったく同じことができます。実際には、それらは補完的であるように見えます。Eclipse 用の Force.com IDE に組み込まれている Force.com 移行ツールを使用すると、展開が可能な限り簡単になり (それほどではありません)、展開しようとしているものをよく見ることができます。一方で、Ant が IDE ではできなかったいくつかのことを行うのを見てきました。したがって、おそらく両方を学ぶ価値があります。
私たちが目指しているプロセスは、すべてのプロジェクトを SVN に保持し、SVN 構造をプロジェクト定義として使用することです (Eclipse はこれを処理し、尊重します)。また、移行には Eclipse を使用し、場合によっては Ant を使用します。どこにもパッケージは必要ありません。
ところで、もう 1 つ注意が必要です。すべてのコンポーネントが移行可能というわけではありません。ターゲット環境で手動で再構成する必要があるものもあります。1 つの例は、時間ベースのワークフローです。キューとグループも手動で作成する必要があると思います。同様に、メタデータ API はフィールドの削除を直接処理できないため、ソースでフィールドを削除した場合は、ターゲットで手動で削除する必要があります。他のケースもあります。
お役に立てば幸いです --
-- スティーブ・レーン