Я могу говорить об этом из недавнего мучительного опыта.
Упаковка: это очень старый метод, предшествующий API метаданных, на который опираются как Ant, так и Eclipse. По нашему опыту, единственным преимуществом упаковки является определение вашего проекта. Если вы используете Eclipse (что мы и рекомендуем), вы можете определить свой проект как основанный на конкретном пакете. Пока вы не забыли добавить новые компоненты в ваш пакет, ваш проект зависает вместе
Одна вещь, которая озадачила нас некоторое время, кстати, это многократное использование пакета. Мы отметили следующее:
Установленные пакеты: они входят в управляемые и неуправляемые версии и, по словам недавнего поста на платах SFDC, действительно предназначены для независимых поставщиков ПО, чтобы развертывать свои вещи в различных неизвестных организациях "там". Как управляемые, так и неуправляемые пакеты имеют ограничения, которые делают их непригодными и ненужными для развертывания от разработки до производства внутри организации или в любом случае, когда вы занимаетесь пользовательской разработкой и не собираетесь распространять код на большую анонимную базу.
Неустановленные пакеты: это то, что вы видите, когда нажимаете «Пакеты» в веб-интерфейсе. Они, которые мы иногда называем «пакетами разработки», кажутся просто удобным способом сохранить определение проекта вместе.
В любом случае, я пришел к выводу, что нашей команде (специализированной разработке, а не ISV) не нужны пакеты в любой форме.
Другие формы развертывания, как Eclipse, так и Ant, основаны на API-интерфейсе метаданных. Теоретически они способны на одно и то же. В действительности они кажутся взаимодополняющими. Средство миграции Force.com, встроенное в IDE Force.com для Eclipse, делает развертывание настолько простым, насколько это возможно (что не очень), и дает вам хорошее представление о том, что оно намеревается развернуть. С другой стороны, мы видели, как Ant делал некоторые вещи, которые IDE не могла. Так что, вероятно, стоит изучить оба.
Процесс, к которому мы стремимся, состоит в том, чтобы сохранить все наши проекты в SVN и использовать структуру SVN в качестве определения проекта (Eclipse будет работать с этим и уважать его). И мы используем Eclipse и иногда Ant для миграции. Нет очевидной необходимости в каких-либо пакетах.
Кстати, еще одна вещь, о которой следует помнить - не все компоненты переносимы. Некоторые вещи должны быть перенастроены вручную в целевой среде. Одним из примеров могут быть основанные на времени рабочие процессы. Я думаю, что очереди и группы также должны быть созданы. Аналогично, API метаданных не может напрямую обрабатывать удаление полей, поэтому, если вы удалили поле в своем источнике, вам нужно удалить его вручную в целевом объекте. Есть и другие случаи.
Надеюсь, это полезно -
- Стив Лейн