We have a native application pulling jakarta.validation:jakarta.validation-api as a transitive dependency but not using Validation.
And the following failure appears during processAot task for Spring Boot 3.0.3 and 3.0.4, but not 3.0.2
~/...//spring-cloud-gateway-k8s >>> ./gradlew :scg-operator:processAot
> Task :scg-operator:processAot
2023-03-16T10:54:24.913+01:00 INFO 99554 --- [ main] c.v.t.s.OperatorApplication : Starting OperatorApplication using Java 17.0.6 with PID 99554 (/Users////spring-cloud-gateway-k8s/scg-operator/build/classes/java/main started by in /Users//work/code/spring-cloud-gateway-k8s/scg-operator)
Exception in thread "main" java.lang.ExceptionInInitializerErrorc.v.t.s.OperatorApplication : No active profile set, falling back to 1 default profile: "default"
at org.springframework.validation.beanvalidation.BeanValidationBeanRegistrationAotProcessor.processAheadOfTime(BeanValidationBeanRegistrationAotProcessor.java:59)
at org.springframework.beans.factory.aot.BeanDefinitionMethodGeneratorFactory.getAotContributions(BeanDefinitionMethodGeneratorFactory.java:151)
at org.springframework.beans.factory.aot.BeanDefinitionMethodGeneratorFactory.getBeanDefinitionMethodGenerator(BeanDefinitionMethodGeneratorFactory.java:99)
at org.springframework.beans.factory.aot.BeanDefinitionMethodGeneratorFactory.getBeanDefinitionMethodGenerator(BeanDefinitionMethodGeneratorFactory.java:115)
at org.springframework.beans.factory.aot.BeanRegistrationsAotProcessor.processAheadOfTime(BeanRegistrationsAotProcessor.java:48)
at org.springframework.beans.factory.aot.BeanRegistrationsAotProcessor.processAheadOfTime(BeanRegistrationsAotProcessor.java:36)
at org.springframework.context.aot.BeanFactoryInitializationAotContributions.getContributions(BeanFactoryInitializationAotContributions.java:67)
at org.springframework.context.aot.BeanFactoryInitializationAotContributions.<init>(BeanFactoryInitializationAotContributions.java:49)
at org.springframework.context.aot.BeanFactoryInitializationAotContributions.<init>(BeanFactoryInitializationAotContributions.java:44)
at org.springframework.context.aot.ApplicationContextAotGenerator.lambda$processAheadOfTime$0(ApplicationContextAotGenerator.java:58)
at org.springframework.context.aot.ApplicationContextAotGenerator.withCglibClassHandler(ApplicationContextAotGenerator.java:67)
at org.springframework.context.aot.ApplicationContextAotGenerator.processAheadOfTime(ApplicationContextAotGenerator.java:53)
at org.springframework.context.aot.ContextAotProcessor.performAotProcessing(ContextAotProcessor.java:106)
at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:84)
at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:49)
at org.springframework.context.aot.AbstractAotProcessor.process(AbstractAotProcessor.java:82)
at org.springframework.boot.SpringApplicationAotProcessor.main(SpringApplicationAotProcessor.java:80)
Caused by: jakarta.validation.NoProviderFoundException: Unable to create a Configuration, because no Jakarta Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
at jakarta.validation.Validation$GenericBootstrapImpl.configure(Validation.java:291)
at jakarta.validation.Validation.buildDefaultValidatorFactory(Validation.java:103)
at org.springframework.validation.beanvalidation.BeanValidationBeanRegistrationAotProcessor$BeanValidationDelegate.<clinit>(BeanValidationBeanRegistrationAotProcessor.java:66)
... 17 more
It seems BeanValidationBeanRegistrationAotProcessor is too strict and while having the API without implementation is not useful I don't think is a common case when dealing with third-party dependencies (in this case io.swagger.core.v3:swagger-core).
Current workarounds:
- Excluding
exclude (group: 'jakarta.validation', module: 'jakarta.validation-api') completely
- Adding
implementation 'org.springframework.boot:spring-boot-starter-validation'
We have a native application pulling
jakarta.validation:jakarta.validation-apias a transitive dependency but not using Validation.And the following failure appears during
processAottask for Spring Boot 3.0.3 and 3.0.4, but not 3.0.2It seems
BeanValidationBeanRegistrationAotProcessoris too strict and while having the API without implementation is not useful I don't think is a common case when dealing with third-party dependencies (in this caseio.swagger.core.v3:swagger-core).Current workarounds:
exclude (group: 'jakarta.validation', module: 'jakarta.validation-api')completelyimplementation 'org.springframework.boot:spring-boot-starter-validation'