.agents/skills/classloading-and-runtime-dev/SKILL.md
ClassNotFoundException at runtime.@Recorder lives in the runtime module but
is invoked from deployment build steps.Extensions providing dev-mode-only functionality (e.g., Dev UI pages) use a
runtime-dev/ module. These classes are only loaded in dev mode, not in
production. This requires two steps:
In the runtime module's pom.xml, configure quarkus-extension-maven-plugin:
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-extension-maven-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>extension-descriptor</goal>
</goals>
<configuration>
<conditionalDevDependencies>
<artifact>${project.groupId}:${project.artifactId}-dev:${project.version}</artifact>
</conditionalDevDependencies>
</configuration>
</execution>
</executions>
</plugin>
Without this, runtime-dev classes will NOT be loaded in dev mode — you get
ClassNotFoundException.
@BuildSteps(onlyIf = IsLocalDevelopment.class)
class MyExtensionDevUIProcessor {
// Dev UI build steps here
}
Forgetting conditionalDevDependencies is particularly confusing because:
conditionalDevDependencies for runtime-dev modules