Package io.gdcc.spi.meta.processor
This package contains compile-time infrastructure for validating plugin declarations and producing metadata resources consumed by the runtime plugin loading mechanism.
Overview
The processor in this package connects the declaration model in io.gdcc.spi.meta.annotations,
the core SPI contracts in io.gdcc.spi.meta.plugin, and the descriptor model in io.gdcc.spi.meta.descriptor.
It evaluates
@DataversePlugin,
@PluginContract, and
@RequiredProvider
declarations on types derived from Plugin and CoreProvider,
validates their structure, and generates serialized descriptor
resources in the format defined by DescriptorFormat.
Generated metadata
The primary generated output is descriptor metadata under "META-INF/dataverse/plugins/".
These descriptors are intended to serve as the authoritative source for plugin discovery and compatibility metadata,
and may later be discovered by DescriptorScanner and resolved into runtime-facing
models such as PluginDescriptor by the plugin loader.
For compatibility with older runtime environments, the processor may also emit META-INF/services resources.
That mechanism is transitional: descriptor-based discovery is the preferred direction, as it avoids several class-loading
and isolation limitations associated with ServiceLoader-based loading alone.
Maven configuration
On JDK 22 and newer, annotation processors should be configured explicitly in the build.
In Maven, this is typically done through the maven-compiler-plugin, for example:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>io.gdcc</groupId>
<artifactId>dataverse-spi</artifactId>
<version>${spi.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
Types in this package are mainly internal build-time infrastructure rather than part of the public runtime API.
-
ClassesClassDescriptionAnnotation processor generating build-time metadata for plugin implementations.