---
schema_version: "1"
id: 93e917b4a1089db0d531a3e34aac619c39fe99a25fd518a6244e961ed1e46db7
title: Constructing a Project Manifest
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/platform/salesforce-migration-guide/guides/daas/daas-package.md
canonical_url: https://developer.salesforce.com/docs/platform/salesforce-migration-guide/guide/daas-package.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 04664a48db5140b2e3c372a9cdd6c32a46a419c2e8c8a7999d57c658916f62a3
products:
  - Ant Migration Tool Guide
  - Platform Developer Content
---

# Constructing a Project Manifest

**note:** The Ant Migration Tool is retired with Spring ’24. The tool continues to function as-is for future API versions but isn’t updated with new functionality and isn’t supported.  If Salesforce adds a new feature that is incompatible with Ant, the Ant Migration Tool won't be updated to support it. To manage metadata changes, switch to Salesforce CLI for a modern, supported developer experience.

The package.xml file is a project manifest that lists all the components you want to retrieve or deploy in a single request. You can retrieve or deploy only a single package at a time.

The following elements may be defined in package.xml:

| Name         | Description                                                                                                                                                                                                                                                                      |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<fullName>` | The name of the server-side package to deploy into. If the `<fullName>` field is omitted, components will not be assigned to a package when deployed, and will be in the `unpackaged` package. This field is not used for retrieve.                                              |
| `<types>`    | This element contains one or more `<members>` tags and one `<name>` tag, and is used to list the metadata components of a certain type to retrieve or deploy.                                                                                                                    |
| `<members>`  | The full name of a component. There is one `<members>` element defined for each component in the directory. You can replace the value in this member with the wildcard character `*` (asterisk) instead of listing each member separately. This is a child element of `<types>`. |
| `<name>`     | Contains the type of the component, for example `CustomObject` or `Profile`. There is one name defined for each component type in the directory. This is a child element of `<types>`.                                                                                           |
| `<version>`  | The Metadata API version number of the files being retrieved or deployed. When deploying, all the files must conform to the same version of the Metadata API.                                                                                                                    |

**Component Types**

For a complete list of the component types that can be defined by the `<name>` element in package.xml, see [Metadata Types](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_types_list.htm) in the [Metadata API Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/).

## Specifying Standard Objects

To retrieve standard objects and/or custom fields on standard objects, you must name the component in package.xml. The following package.xml file will retrieve a single field `EngineeringReqNumber__c`, on the Case object, as well as the entire Account object.

```xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>Case.EngineeringReqNumber__c</members>
        <name>CustomField</name>
    </types>
    <types>
        <members>Account</members>
        <name>CustomObject</name>
    </types>
    <version>68.0</version>
</Package>
```

**note:** Custom objects and standard objects should be specified in the same `<types>` section, the one containing `<name>CustomObject</name>`.

- **[Specifying Named Components](https://developer.salesforce.com/docs/platform/salesforce-migration-guide/guide/daas-package-named-components.md)**

- **[Specifying all Components of a Type](https://developer.salesforce.com/docs/platform/salesforce-migration-guide/guide/daas-package-by-component-type.md)**

- **[Specifying Standard Objects](https://developer.salesforce.com/docs/platform/salesforce-migration-guide/guide/daas-package-standard-objects.md)**

- **[Getting Information About Metadata Types](https://developer.salesforce.com/docs/platform/salesforce-migration-guide/guide/forcemigrationtool-helpertargets.md)**

- **[Describing Metadata Types](https://developer.salesforce.com/docs/platform/salesforce-migration-guide/guide/forcemigrationtool-describemetadata.md)**

- **[Listing Components for a Metadata Type](https://developer.salesforce.com/docs/platform/salesforce-migration-guide/guide/forcemigrationtool-listmetadata.md)**


    The `listMetadata` target retrieves property information about your metadata components.This target is useful to identify individual components in package.xml for a retrieval or a high-level view of particular metadata types. For example, you can use this target to return a list of names of all your `CustomObject` or `Layout` components. Then use the information retrieve a subset of the components.
