## When to add new fields?
Adding new fields is useful when you are already using a target type, but need to store additional metadata for your plugin.
For example, if you're writing a codegen plugin to convert a `
protobuf_source` target into Java source files, you may want to add a `
jdk_version` field to `
If you are instead adding support for a new language, [create a new target type](🔗).
If you want to reduce boilerplate in BUILD files, such as changing default values, use [macros](🔗).
## How to add new fields
First, [define the field](🔗). Then, register it by using `
OriginalTarget.register_plugin_field(CustomField)`, like this:
To confirm this worked, run `
./pants help protobuf_source`.