---
schema_version: "1"
id: e01ecec64f9ef41b712499a223ad1eb6d4fb38c77169f20b4daf4b4abf2ef0a5
title: template generate apex class
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/salesforcedx/sfclireference/guides/template/cli_reference_template_generate_apex_class.md
canonical_url: https://developer.salesforce.com/docs/platform/salesforce-cli-reference/guide/cli_reference_template_generate_apex_class.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 0c67f210aec46f9a3de64264da044a5d41c463c63ea211691db52af88eb15366
products:
  - Salesforce CLI Command Reference
  - salesforcedx
---
<!-- prettier-ignore-start -->

# template generate apex class

Generate an Apex class.

## Description for template generate apex class

Generates the Apex *.cls file and associated metadata file. These files must be contained in a parent directory called "classes" in your package directory. Either run this command from an existing directory of this name, or use the --output-dir flag to generate one or point to an existing one.

## Aliases for template generate apex class

`force:apex:class:create`

`apex:generate:class`

## Flags

| Flag Name (Long) | Flag Name (Short) | Description |
|------------------|-------------------|-------------|
| <code>&#8209;&#8209;api&#8209;version</code> | N/A | **Type:** Value<br><br>Override the api version used for api requests made by this command |
| <code>&#8209;&#8209;flags&#8209;dir</code> | N/A | **Type:** Value<br><br>Import flag values from a directory. |
| <code>&#8209;&#8209;json</code> | N/A | **Type:** Boolean<br><br>Format output as json. |
| <code>&#8209;&#8209;name</code> | <code>&#8209;n</code> | **Type:** Value<br>**Required**<br><br>Name of the generated Apex class.<br><br>The name can be up to 40 characters and must start with a letter. |
| <code>&#8209;&#8209;output&#8209;dir</code> | <code>&#8209;d</code> | **Type:** Value<br>**Default value:** `.`<br><br>Directory for saving the created files.<br><br>The location can be an absolute path or relative to the current working directory. The default is the current directory. |
| <code>&#8209;&#8209;template</code> | <code>&#8209;t</code> | **Type:** Value<br>**Valid Values:** `ApexException`, `ApexUnitTest`, `BasicUnitTest`, `Batchable`, `DefaultApexClass`, `InboundEmailService`, `Queueable`<br>**Default value:** `DefaultApexClass`<br><br>Template to use for file creation.<br><br>Supplied parameter values or default values are filled into a copy of the template. |

## Examples for template generate apex class

Generate two metadata files associated with the MyClass Apex class (MyClass.cls and MyClass.cls-meta.xml) in the current directory:

```shell
sf template generate apex class --name MyClass
```

Similar to previous example, but generates the files in the "force-app/main/default/classes" directory:

```shell
sf template generate apex class --name MyClass --output-dir force-app/main/default/classes
```
<!-- prettier-ignore-end -->
