I want to generate a client based on an openapi spec and followed the instructions here: https://docs.quarkiverse.io/quarkus-openapi-generator/dev/client.html
Using Quarkus version 3.22.2 and quarkus-openapi-generator 2.10.0
My project has nothing but the openapi yml file in the main/resources folder, an empty beans.xml file in main/resources/META-INF and the following in the application.properties file:
quarkus.openapi-generator.codegen.input-base-dir=src/main/resources
quarkus.openapi-generator.codegen.spec.addressapi_yaml.mutiny=true
quarkus.openapi-generator.codegen.spec.addressapi_yaml.mutiny.return-response=true
platform.quarkus.native.builder-image=false
My pom.xml looks like this:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>quarkus-openapi-client</artifactId> <version>development-SNAPSHOT</version> <properties> <quarkus.platform.version>3.22.2</quarkus.platform.version> </properties> <dependencyManagement> <dependencies> <!-- Quarkus --> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-rest</artifactId> <version>${quarkus.platform.version}</version> </dependency> <dependency> <groupId>io.quarkiverse.openapi.generator</groupId> <artifactId>quarkus-openapi-generator</artifactId> <version>2.10.0</version> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-rest-client-jackson</artifactId> <version>${quarkus.platform.version}</version> </dependency> <!-- other --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.19.0</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Quarkus --> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-rest</artifactId> </dependency> <dependency> <groupId>io.quarkiverse.openapi.generator</groupId> <artifactId>quarkus-openapi-generator</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-rest-client-jackson</artifactId> </dependency> <!-- other --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>io.quarkus</groupId> <artifactId>quarkus-maven-plugin</artifactId> <version>${quarkus.platform.version}</version> <extensions>true</extensions> <executions> <execution> <goals> <goal>build</goal> <goal>generate-code</goal> <goal>generate-code-tests</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.14.0</version> <configuration> <parameters>true</parameters> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>3.5.2</version> <configuration> <systemPropertyVariables> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> <maven.home>${maven.home}</maven.home> </systemPropertyVariables> </configuration> </plugin> <plugin> <artifactId>maven-failsafe-plugin</artifactId> <version>3.5.2</version> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> <configuration> <systemPropertyVariables> <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> <maven.home>${maven.home}</maven.home> </systemPropertyVariables> </configuration> </plugin> </plugins> </build> </project>
When building with maven, I get the following error:
[ERROR] Failed to execute goal io.quarkus:quarkus-maven-plugin:3.22.2:build (default) on project quarkus-openapi-client: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors [ERROR] [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: jakarta.enterprise.inject.spi.DeploymentException: Found 2 deployment problems: [ERROR] 1 Unsatisfied dependency for type io.quarkiverse.openapi.generator.providers.BaseCompositeAuthenticationProvider and qualifiers [@OpenApiSpec(openApiSpecId = "addressapi_yml")] [ERROR] - injection target: org.openapi.quarkus.addressapi_yml.api.auth.CompositeAuthenticationProvider#compositeProvider [ERROR] - declared on CLASS bean [types=[jakarta.ws.rs.client.ClientRequestFilter, java.lang.Object, org.openapi.quarkus.addressapi_yml.api.auth.CompositeAuthenticationProvider], qualifiers=[@Default, @Any], target=org.openapi.quarkus.addressapi_yml.api.auth.CompositeAuthenticationProvider] [ERROR] The following classes match by type, but have been skipped during discovery: [ERROR] - io.quarkiverse.openapi.generator.providers.BaseCompositeAuthenticationProvider has no bean defining annotation (scope, stereotype, etc.)
[ERROR] [ERROR] [ERROR] 2 Unsatisfied dependency for type io.quarkiverse.openapi.generator.providers.BaseCompositeAuthenticationProvider and qualifiers [@OpenApiSpec(openApiSpecId = "addressapi_yml")] [ERROR] - injection target: parameter 'compositeProvider' of org.openapi.quarkus.addressapi_yml.api.auth.AuthenticationPropagationHeadersFactory constructor [ERROR] - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.providers.AbstractAuthenticationPropagationHeadersFactory, org.openapi.quarkus.a ddressapi_yml.api.auth.AuthenticationPropagationHeadersFactory, org.eclipse.microprofile.rest.client.ext.ClientHeadersFactory, java.lang.Object], qualifiers=[@Default, @Any], target=org.openapi.quarkus.addressapi_yml.api.auth.AuthenticationPropagationHeadersFactory] [ERROR] The following classes match by type, but have been skipped during discovery: [ERROR] - io.quarkiverse.openapi.generator.providers.BaseCompositeAuthenticationProvider has no bean defining annotation (scope, stereotype, etc.)
[ERROR] [ERROR] [ERROR] at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1589) [ERROR] at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:338) [ERROR] at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:178) [ERROR] at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:488) [ERROR] at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733) [ERROR] at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856) [ERROR] at io.quarkus.builder.BuildContext.run(BuildContext.java:255) [ERROR] at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) [ERROR] at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675) [ERROR] at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654) [ERROR] at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627) [ERROR] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594) [ERROR] at java.base/java.lang.Thread.run(Thread.java:1583) [ERROR] at org.jboss.threads.JBossThread.run(JBossThread.java:499) [ERROR] Suppressed: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type io.quarkiverse.openapi.generator.providers.BaseCompositeAuthenticationProvider and qualifiers [@OpenApiSpec(openApiSpecId = "addressapi_yml")] [ERROR] - injection target: org.openapi.quarkus.addressapi_yml.api.auth.CompositeAuthenticationProvider#compositeProvider [ERROR] - declared on CLASS bean [types=[jakarta.ws.rs.client.ClientRequestFilter, java.lang.Object, org.openapi.quarkus.addressapi_yml.api.auth.CompositeAuthenticationProvider], qualifiers=[@Default, @Any], target=org.openapi.quarkus.addressapi_yml.api.auth.CompositeAuthenticationProvider] [ERROR] The following classes match by type, but have been skipped during discovery: [ERROR] - io.quarkiverse.openapi.generator.providers.BaseCompositeAuthenticationProvider has no bean defining annotation (scope, stereotype, etc.)
[ERROR] [ERROR] [ERROR] at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:547) [ERROR] at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:689) [ERROR] at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:323) [ERROR] ... 12 more [ERROR] Suppressed: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type io.quarkiverse.openapi.generator.providers.BaseCompositeAuthenticationProvider and qualifiers [@OpenApiSpec(openApiSpecId = "addressapi_yml")] [ERROR] - injection target: parameter 'compositeProvider' of org.openapi.quarkus.addressapi_yml.api.auth.AuthenticationPropagationHeadersFactory constructor [ERROR] - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.providers.AbstractAuthenticationPropagationHeadersFactory, org.openapi.quarkus.a ddressapi_yml.api.auth.AuthenticationPropagationHeadersFactory, org.eclipse.microprofile.rest.client.ext.ClientHeadersFactory, java.lang.Object], qualifiers=[@Default, @Any], target=org.openapi.quarkus.addressapi_yml.api.auth.AuthenticationPropagationHeadersFactory] [ERROR] The following classes match by type, but have been skipped during discovery: [ERROR] - io.quarkiverse.openapi.generator.providers.BaseCompositeAuthenticationProvider has no bean defining annotation (scope, stereotype, etc.)
[ERROR] [ERROR] [ERROR] at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:547) [ERROR] at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:689) [ERROR] at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:323) [ERROR] ... 12 more
It says io.quarkiverse.openapi.generator.providers.BaseCompositeAuthenticationProvider has no bean defining annotation (scope, stereotype, etc.). I have no control over that class. Is there a way for it to be identified as bean ? Or is there something else I am missing ?
Interesting to notice that it runs with no error with the petstore.yaml
Thank you !