Что я делаю неправильно, пытаясь выполнить развертывание с помощью Force.com Migration Tool (ANT) - PullRequest
3 голосов
/ 22 января 2011

В настоящее время я пытаюсь пройти курс обучения по SalesForce.com на тему " Развертывание с помощью Force.com Migration Tool (ANT) ".

Я уверен, что что-то упустил ... возможно, потому что мои знания и опыт работы с Ant были очень ограничены.

Я создал новый проект Java и скопировал в него каталог Sample из salesforce_ant_20.0.zip. Я изменил build.properties и запустил build.xml в eclipse, чтобы проверить это. Это все работало нормально.

Итак, я создал Sandbox1 в каталоге src и скопировал в него package.xml из моего SFDC-проекта. Затем я скопировал build.properties и build.xm l из sample в каталог src. Теперь, когда я запустил build.xml, он пожаловался на то, что deployRoot mypkg не существует. Я изменил deployRoot на Sandbox1 и попытался протестировать снова. Ниже приведен результат:

Buildfile: D:\education\sfdc\Deploy\src\build.xml
test:
[sf:deploy] Request for a deploy submitted successfully.
[sf:deploy] Request Id for the current deploy task: 04sA0000002GwsGIAS
[sf:deploy] Waiting for server to finish processing the request…
[sf:deploy] Request Status: Completed

BUILD FAILED
D:\education\sfdc\Deploy\src\build.xml:14: FAILURES:
Error: package.xml(Account):An object ‘Account’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(AccountContactRole):An object ‘AccountContactRole’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Activity):An object ‘Activity’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Asset):An object ‘Asset’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Campaign):An object ‘Campaign’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(CampaignMember):An object ‘CampaignMember’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Case):An object ‘Case’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(CaseContactRole):An object ‘CaseContactRole’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Contact):An object ‘Contact’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(ContentVersion):An object ‘ContentVersion’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Contract):An object ‘Contract’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(ContractContactRole):An object ‘ContractContactRole’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Event):An object ‘Event’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Idea):An object ‘Idea’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Lead):An object ‘Lead’ of type CustomObject was named in package.xml, but was not found in zipped directory
Error: package.xml(Opportunity):An object ‘Opportunity’ of type CustomObject was named in package.xml, but was not found in zipped directory

В этом случае это помогает:

(1) /src/sandbox1 содержит только файл package.xml из другого функционального проекта SalesForce в Eclipse.

В этом файле написано:

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>ApexClass</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexComponent</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexPage</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexTrigger</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomApplication</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomLabels</name>
    </types>
    <types>
        <members>*</members>
        <members>Account</members>
        <members>AccountContactRole</members>
        <members>Activity</members>
        <members>Asset</members>
        <members>Campaign</members>
        <members>CampaignMember</members>
        <members>Case</members>
        <members>CaseContactRole</members>
        <members>Contact</members>
        <members>ContentVersion</members>
        <members>Contract</members>
        <members>ContractContactRole</members>
        <members>Event</members>
        <members>Idea</members>
        <members>Lead</members>
        <members>Opportunity</members>
        <members>OpportunityContactRole</members>
        <members>OpportunityLineItem</members>
        <members>PartnerRole</members>
        <members>Product2</members>
        <members>Site</members>
        <members>Solution</members>
        <members>Task</members>
        <members>User</members>
        <members>UserLicense</members>
        <name>CustomObject</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomObjectTranslation</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomPageWebLink</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomSite</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomTab</name>
    </types>
    <types>
        <members>*</members>
        <name>DataCategoryGroup</name>
    </types>
    <types>
        <members>unfiled$public</members>
        <members>unfiled$public/Large_Invoice_Template</members>
        <members>unfiled$public/MarketingProductInquiryResponse</members>
        <members>unfiled$public/SUPPORTSelfServiceNewCommentNotificationSAMPLE</members>
        <members>unfiled$public/SUPPORTSelfServiceNewUserLoginInformationSAMPLE</members>
        <members>unfiled$public/SUPPORTSelfServiceResetPasswordSAMPLE</members>
        <members>unfiled$public/SalesNewCustomerEmail</members>
        <members>unfiled$public/SupportCaseAssignmentNotification</members>
        <members>unfiled$public/SupportCaseCreatedPhoneInquiries</members>
        <members>unfiled$public/SupportCaseCreatedWebInquiries</members>
        <members>unfiled$public/SupportCaseResponse</members>
        <members>unfiled$public/SupportEscalatedCaseNotification</members>
        <members>unfiled$public/SupportEscalatedCaseReassignment</members>
        <members>unfiled$public/SupportSelfServiceNewLoginandPassword</members>
        <members>unfiled$public/SupportSelfServiceResetPassword</members>
        <name>EmailTemplate</name>
    </types>
    <types>
        <members>*</members>
        <name>HomePageComponent</name>
    </types>
    <types>
        <members>*</members>
        <name>HomePageLayout</name>
    </types>
    <types>
        <members>*</members>
        <name>Layout</name>
    </types>
    <types>
        <members>*</members>
        <name>Letterhead</name>
    </types>
    <types>
        <members>*</members>
        <name>Profile</name>
    </types>
    <types>
        <members>ApexDevNet</members>
        <name>RemoteSiteSetting</name>
    </types>
    <types>
        <members>unfiled$public</members>
        <name>Report</name>
    </types>
    <types>
        <members>*</members>
        <name>ReportType</name>
    </types>
    <types>
        <members>*</members>
        <name>Scontrol</name>
    </types>
    <types>
        <members>*</members>
        <name>StaticResource</name>
    </types>
    <types>
        <members>*</members>
        <name>Workflow</name>
    </types>
    <version>20.0</version>
</Package>

* build.xml от средства миграции Force.com на основе Java / Ant говорит:

<property file="build.properties"/>
<property environment="env"/>

<!-- Test out deploy and retrieve verbs for package 'mypkg' -->
<target name="test">
  <!-- Upload the contents of the "mypkg" package -->
  <sf:deploy 
            username="${sf.username}" 
            password="${sf.password}" 
            serverurl="${sf.serverurl}" 
            deployRoot="mypkg"
    />
  <mkdir dir="retrieveOutput"/>
  <!-- Retrieve the contents into another directory -->
  <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" retrieveTarget="retrieveOutput" packageNames="MyPkg"/>
</target>

<!-- Retrieve an unpackaged set of metadata from your org -->
<!-- The file unpackaged/package.xml lists what is to be retrieved -->
<target name="retrieveUnpackaged">
  <mkdir dir="retrieveUnpackaged"/>
  <!-- Retrieve the contents into another directory -->
  <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" retrieveTarget="retrieveUnpackaged" unpackaged="unpackaged/package.xml"/>
</target>

<!-- Retrieve all the items of a particular metadata type -->
<target name="bulkRetrieve">
  <sf:bulkRetrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" metadataType="${sf.metadataType}" retrieveTarget="retrieveUnpackaged"/>
</target>

<!-- Retrieve metadata for all the packages specified under packageNames -->
<target name="retrievePkg">
  <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" retrieveTarget="retrieveOutput" packageNames="${sf.pkgName}"/>
</target>

<!-- Deploy the unpackaged set of metadata retrieved with retrieveUnpackaged -->
<target name="deployUnpackaged">
  <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" deployRoot="retrieveUnpackaged"/>
</target>

<!-- Deploy a zip of metadata files to the org -->
<target name="deployZip">
  <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" zipFile="${sf.zipFile}" pollWaitMillis="1000"/>
</target>

<!-- Shows deploying code & running tests for code in directory -->
<target name="deployCode">
  <!-- Upload the contents of the "codepkg" directory, running the tests for just 1 class -->
  <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" deployRoot="codepkg">
    <runTest>SampleDeployClass</runTest>
  </sf:deploy>
</target>

<!-- Shows removing code; only succeeds if done after deployCode -->
<target name="undeployCode">
  <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" deployRoot="removecodepkg"/>
</target>

<!-- Shows retrieving code; only succeeds if done after deployCode -->
<target name="retrieveCode">
  <!-- Retrieve the contents listed in the file codepkg/package.xml into the codepkg directory -->
  <sf:retrieve username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" retrieveTarget="codepkg" unpackaged="codepkg/package.xml"/>
</target>

<!-- Shows deploying code, running all tests, and running tests (1 of which fails), and logging. -->
<target name="deployCodeFailingTest">
  <!-- Upload the contents of the "codepkg" package, running all tests -->
  <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" deployRoot="codepkg" runAllTests="true" logType="Debugonly"/>
</target>

<!-- Shows check only; never actually saves to the server -->
<target name="deployCodeCheckOnly">
  <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" deployRoot="codepkg" checkOnly="true"/>
</target>

<!-- Retrieve the information of all items of a particular metadata type -->
<target name="listMetadata">
  <sf:listMetadata username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" metadataType="${sf.metadataType}"/>
</target>

<!-- Retrieve the information on all supported metadata type -->
<target name="describeMetadata">
  <sf:describeMetadata username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}"/>
</target>

Есть идеи, что я сделал не так или как это исправить?

Ответы [ 5 ]

0 голосов
/ 29 ноября 2018

Оператор , но не был найден в заархивированном каталоге - это проблема, связанная с именами папок, которые вы используете.Если вы используете пользовательские папки вместо codepkg или mypkg и т. Д., Вам нужно изменить имена в retrieveTarget = "codepkg" unpackaged = "codepkg / package.xml" , чтобы отразить новые имена в каждой из ваших целей,Проверьте изображение перевернуло ссылку для этого объяснения https://i.stack.imgur.com/GH40d.jpg[1]

0 голосов
/ 28 апреля 2016

Слишком поздно.Но проблема здесь очень мала, я считаю, поставьте allowMissingFiles="true" в задаче.Что это будет делать, если он не найдет файлы в каталоге, где находится ваш build.xml, он все равно разрешит развертывание.Инструмент миграции не позволяет упоминать компоненты в package.xml, если они не находятся в каталоге, и обходной путь к этому - использование вышеупомянутой опции.

Даже если у вас будет файл package.xml для извлечения всех компонентов из одной организации и у вас будет только 2 класса для депиляции, один и тот же файл пакета будет работать с параметром allowmissingfiles = true.

0 голосов
/ 28 февраля 2013

Ваш файл сборки по умолчанию "развертывается" с вашего компьютера на сервер.Это работает, только если у вас есть контент на вашем компьютере.Сначала запустите «retrieveUnpackaged».Это получит все на сервере, указанном в файле package.xml.Затем вы можете изменить результаты и развернуть.

Лично я использую только тот тип файла package.xml, который вы видите выше, для целей резервного копирования.Я держу в одном файле package.xml все, что перечислено (используя «*» плюс стандартные объекты) для получения всего содержимого.Я никогда не использую эти результаты для внесения изменений на сервере, потому что возможное «развертывание» будет длиться вечно.

Вместо этого создайте файл package.xml, чтобы получить только те файлы, с которыми вам нужно работать.Затем внесите изменения в код и разверните его с помощью этого меньшего пакета.

0 голосов
/ 21 апреля 2016

Ваш файл пакета использует старую версию API:

<version>20.0</version>

И я почти уверен, что версия не поддерживает все, что вы там делаете.

quickредактировать: 36 это текущая версия, я думаю.edit2: Человек это старый вопрос, как я сюда попал?

0 голосов
/ 24 января 2011

Ошибки указывают на то, что ваш package.xml ссылается на компоненты, у которых нет соответствующих файлов в структуре каталогов. Удалите эти ссылки из package.xml или добавьте отсутствующие пользовательские объектные файлы.

Если это не сработает, не могли бы вы отредактировать свой вопрос, включив в него каталог для Sandbox1?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...