Important
You are viewing documentation for an older version of Confluent Platform. For the latest, click here.
Schema Registry Maven Plugin¶
A Maven plugin for Schema Registry is available to help throughout the development process, with configuration options as listed below.
Tip
There is no official out-of-the-box Gradle plugin available for Schema Registry. However, you can reference any of these plugins in your Maven pom.xml
(Project Object Model file):
- GitHub Imflog Kafka Schema Registry Gradle Plugin
- com.commercehub.gradle.plugin.avro (link to GitHub repository for this plugin is here)
- Maven plugin, used in the pom.xml example file by Avro clients for the Schema Registry Tutorials
schema-registry:download¶
The download goal is used to pull down schemas from a Schema Registry server. This plugin is used to download Avro schemas for the requested subjects and write them to a folder on the local file system.
schemaRegistryUrls
Schema Registry URLs to connect to.
- Type: String[]
- Required: true
userInfoConfig
User credentials for connecting to Schema Registry, of the form
user:password
. This is required if connecting to Confluent Cloud Schema Registry.- Type: String[]
- Required: false
- Default: null
outputDirectory
Output directory to write the schemas to.
- Type: File
- Required: true
schemaExtension
The file extension to use for the output file name. This must begin with a ‘.’ character.
- Type: File
- Required: false
- Default: .avsc
subjectPatterns
The subject patterns to download. This is a list of regular expressions. Patterns must match the entire subject name.
- Type: String[]
- Required: true
<plugin>
<groupId>io.confluent</groupId>
<artifactId>kafka-schema-registry-maven-plugin</artifactId>
<version>5.5.15</version>
<configuration>
<schemaRegistryUrls>
<param>http://192.168.99.100:8081</param>
</schemaRegistryUrls>
<outputDirectory>src/main/avro</outputDirectory>
<subjectPatterns>
<param>^TestSubject000-(key|value)$</param>
</subjectPatterns>
</configuration>
</plugin>
schema-registry:test-compatibility¶
This goal is used to read schemas from the local file system and test them for compatibility against the Schema Registry server(s). This goal can be used in a continuous integration pipeline to ensure that schemas in the project are compatible with the schemas in another environment.
schemaRegistryUrls
Schema Registry URLs to connect to.
- Type: String[]
- Required: true
userInfoConfig
User credentials for connecting to Schema Registry, of the form
user:password
. This is required if connecting to Confluent Cloud Schema Registry.- Type: String[]
- Required: false
- Default: null
subjects
Map containing subject to schema path of the subjects to be registered.
- Type: Map<String, File>
- Required: true
schemaTypes
String that specifies the schema type.
- Type: String (one of
AVRO
(default),JSON
,PROTOBUF
) - Required: false
- Default: AVRO
- Type: String (one of
references
Map containing a reference name and a subject.
- Type: Map<String, Reference[]>
- Required: false
The following example uses the plugin to configure three subjects (order
, product
, and customer
) using schema type: AVRO
<plugin>
<groupId>io.confluent</groupId>
<artifactId>kafka-schema-registry-maven-plugin</artifactId>
<version>5.5.15</version>
<configuration>
<schemaRegistryUrls>
<param>http://192.168.99.100:8081</param>
</schemaRegistryUrls>
<subjects>
<order>src/main/avro/order.avsc</order>
<product>src/main/avro/product.avsc</product>
<customer>src/main/avro/customer.avsc</customer>
</subjects>
<schemaTypes>
<order>AVRO</order>
<product>AVRO</product>
<customer>AVRO</customer>
</schemaTypes>
<references>
<order>
<reference>
<name>com.acme.Product</name>
<subject>product</subject>
</reference>
<reference>
<name>com.acme.Customer</name>
<subject>customer</subject>
</reference>
</order>
</references>
</configuration>
<goals>
<goal>test-compatibility</goal>
</goals>
</plugin>
Example Usage¶
Example usage of schema-registry:test-compatibility
:
- to a local Schema Registry, see Schema Registry Tutorials.
- to Confluent Cloud Schema Registry, see GitHub example.
schema-registry:validate¶
This goal is used to read schemas from the local file system and validate them locally, before registering them.
If you find syntax errors, you can examine and correct them before submitting schemas to Schema Registry with schema-registry:register
.
schemaRegistryUrls
Schema Registry URLs to connect to.
- Type: String[]
- Required: true
userInfoConfig
User credentials for connecting to Schema Registry, of the form
user:password
. This is required if connecting to Confluent Cloud Schema Registry.- Type: String[]
- Required: false
- Default: null
subjects
Map containing subject to schema path of the subjects to be registered.
- Type: Map<String, File>
- Required: true
schemaTypes
String that specifies the schema type.
- Type: String (one of
AVRO
(default),JSON
,PROTOBUF
) - Required: false
- Default: AVRO
- Type: String (one of
references
Map containing a reference name and a subject.
- Type: Map<String, Reference[]>
- Required: false
schema-registry:register¶
This goal is used to read schemas from the local file system and register them on the target Schema Registry server(s). This goal can be used in a continuous deployment pipeline to push schemas to a new environment.
schemaRegistryUrls
Schema Registry URLs to connect to.
- Type: String[]
- Required: true
userInfoConfig
User credentials for connecting to Schema Registry, of the form
user:password
. This is required if connecting to Confluent Cloud Schema Registry.- Type: String[]
- Required: false
- Default: null
subjects
Map containing subject to schema path of the subjects to be registered.
- Type: Map<String, File>
- Required: true
schemaTypes
String that specifies the schema type.
- Type: String (one of
AVRO
(default),JSON
,PROTOBUF
) - Required: false
- Default: AVRO
- Type: String (one of
references
Map containing a reference name and a subject.
- Type: Map<String, Reference[]>
- Required: false
The following example uses the plugin to configure three subjects (order
, product
, and customer
) using schema type: AVRO
<plugin>
<groupId>io.confluent</groupId>
<artifactId>kafka-schema-registry-maven-plugin</artifactId>
<version>5.5.15</version>
<configuration>
<schemaRegistryUrls>
<param>http://192.168.99.100:8081</param>
</schemaRegistryUrls>
<subjects>
<order>src/main/avro/order.avsc</order>
<product>src/main/avro/product.avsc</product>
<customer>src/main/avro/customer.avsc</customer>
</subjects>
<schemaTypes>
<order>AVRO</order>
<product>AVRO</product>
<customer>AVRO</customer>
</schemaTypes>
<references>
<order>
<reference>
<name>com.acme.Product</name>
<subject>product</subject>
</reference>
<reference>
<name>com.acme.Customer</name>
<subject>customer</subject>
</reference>
</order>
</references>
</configuration>
<goals>
<goal>register</goal>
</goals>
</plugin>