Can't use most recent quarkus version
Trying to use this starter project with Quarkus 3.24.1 results in an error:
2025-06-26 20:28:30,308 INFO [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure
2025-06-26 20:28:30,433 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.vertx.http.deployment.webjar.WebJarProcessor#processWebJarDevMode threw an exception: java.lang.RuntimeException: Could not find artifact com.vaadin:vaadin-quarkus-extension-deployment::jar among the application dependencies
at io.quarkus.vertx.http.deployment.webjar.WebJarUtil.getAppArtifact(WebJarUtil.java:101)
at io.quarkus.vertx.http.deployment.webjar.WebJarProcessor.processWebJarDevMode(WebJarProcessor.java:42)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:372)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:289)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:61)
at io.quarkus.deployment.dev.IsolatedDevModeMain.firstStart(IsolatedDevModeMain.java:89)
at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:432)
at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:55)
at io.quarkus.bootstrap.app.CuratedApplication.runInCl(CuratedApplication.java:143)
at io.quarkus.bootstrap.app.CuratedApplication.runInAugmentClassLoader(CuratedApplication.java:98)
at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:107)
at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:70)
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.vertx.http.deployment.webjar.WebJarProcessor#processWebJarDevMode threw an exception: java.lang.RuntimeException: Could not find artifact com.vaadin:vaadin-quarkus-extension-deployment::jar among the application dependencies
at io.quarkus.vertx.http.deployment.webjar.WebJarUtil.getAppArtifact(WebJarUtil.java:101)
at io.quarkus.vertx.http.deployment.webjar.WebJarProcessor.processWebJarDevMode(WebJarProcessor.java:42)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
at io.quarkus.builder.Execution.run(Execution.java:122)
at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:78)
at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:161)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:368)
... 9 more
Caused by: java.lang.RuntimeException: Could not find artifact com.vaadin:vaadin-quarkus-extension-deployment::jar among the application dependencies
at io.quarkus.vertx.http.deployment.webjar.WebJarUtil.getAppArtifact(WebJarUtil.java:101)
at io.quarkus.vertx.http.deployment.webjar.WebJarProcessor.processWebJarDevMode(WebJarProcessor.java:42)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
@edeandrea thank you for reporting. I can confirm the error with Quarkus 3.24.1. However, the application works with Quarkus 3.23.4
Probably something changed in Quarkus 3.24 extension management.
com.vaadin:vaadin-quarkus-extension-deployment::jar does not exist at all.
The project has a dependency on com.vaadin:vaadin-quarkus-extension that is a repackage of com.vaadin:vaadin-quarkus that is the "real" extension and has its deployment module com.vaadin:vaadin-quarkus-deployment.
We need first to figure out what changes in Quarkus are currently breaking the application and then decide how to proceed.
It could be that we will have to provide also a com.vaadin:vaadin-quarkus-extension-deployment, if there is no other way to fix the issue.
Posted a message on Quarkus users channel #users > Failed to start Quarkus - Cannot find deployment artifact @ 💬
Answer on the Quarkus user chat suggests that vaadin-quarkus-extension is not a valid extension, since it is missing the META-INF/quarkus-extension.properties file.
vaadin-quarkus contains the file and it has the following contents
deployment-artifact=com.vaadin\:vaadin-quarkus-deployment\:2.2.0
requires-quarkus-version=[3.20,)
Unfortunately, we cannot simply add it as is when repackaging vaadin-quarkus-extension because it leads to another error at runtime
ERROR] Failed to execute goal io.quarkus.platform:quarkus-maven-plugin:3.24.1:dev (default-cli) on project base-starter-flow-quarkus: Quarkus code generation phase has failed: Quarkus extension deployment artifact com.vaadin:vaadin-quarkus-deployment:jar:2.2.0 does not appear to depend on the corresponding runtime artifact com.vaadin:vaadin-quarkus-extension:jar:24.8.0 -> [Help 1]
So we probably need to repackage also the vaadin-quarkus-deployment artifact to vaadin-quarkus-extension-deployment.
For the moment, it would be good to add a comment on the 24.8.0 release notes, stating that Quarkus 3.24+ is currently not supported.
I've backed down to the 3.23.4 version for now, which is fine for what I'm doing, although I'd like to try out the new dev assistant stuff... :)
vaadin-quarkus-extension is registered as an extension in the registry.quarkus.io but it's not actually an extension (and is not recognized by Quarkus as an extension when a project is built), since it's missing the build time metadata and the corresponding deployment artifact. This should be fixed one way or another.
vaadin-quarkus-extension provides the dev tools metadata, including a codestart and depends on the actual extension - vaadin-quarkus:
[INFO] +- com.vaadin:vaadin-quarkus-extension:jar:24.8.0:compile
[INFO] | +- com.vaadin:vaadin-quarkus:jar:2.2.0:compile
this is not something Quarkus tools would expect though. I'm wondering what the reason for this model was.
Here are two attempts to fix the Vaadin platform extension; both introduce the deployment artifact but in different ways
- https://github.com/vaadin/platform/commit/57f2514cc84dd0fb9d2f6aeb348f5d7dbb4c11dd unpacks the quarkus-extension.properties file and replaces the coordinates of the deployment artifact.
- https://github.com/vaadin/platform/commit/8eee803084e915ce553778f665c70302faa1708d run the Quarkus Maven plugin on the extension, using the unpacked
quarkus-extension.yamlas a template.
I’m wondering what the reason for this model was
@aloubyansky We did in this way mainly for simplicity. The official Quarkus extension (vaadin-quarkus) already lived in its own repository and produced its own artifact so in platform it was easier for us to just wrap those classes and keep the original artefact as a dependency. And it was working fine until now. The motivation for this is described in this ticket: https://github.com/vaadin/flow/issues/11076
Just to make sure I understand the actual reason, is it to release everything under the same version - the platform one?
Otherwise, it doesn't seem to be easier. In a sense there is a little repo producing a Quarkus extension with all the necessary metadata.
Quarkus main currently includes a fix for a build of a project containing vaadin-quarkus-extension, but, the way it works, it will not show up in Quarkus Dev IU. The vaadin-quarkus will, since this is the actual extension.
I just don't think we'll support this kind of model consistently across Quarkus tools.
Thanks, @aloubyansky, you're right, our vaadin-quarkus-extension setup isn't a standard Quarkus extension. Here's the reasoning:
We have an unified platform release, thus, we repackage vaadin-quarkus so everything in the Vaadin platform (core + add-ons + tools) can be released under the same version (e.g., 24.8.0). This keeps the BOM consistent and simplifies dependency management.
Regarding indexing and codestarts, the wrapper adds vaadin-core and vaadin-core-jandex to ensure all components are indexed properly and includes a codestart aligned with the platform version. You cannot produce any Vaadin app without having those components available for developing your UI, and we dont want the user to care about adding those deps.
And release decoupling, we can’t wait for upstream vaadin-quarkus releases to test and ship the platform, and we also want to avoid cyclic dependencies between repos.
We know this model isn’t ideal for Quarkus tools, and we’re working on adding proper metadata and a deployment artifact to fix support in 3.24+.
Let me know if it would help to outline a shared long-term strategy to improve compatibility with Quarkus tooling while preserving the needs of our release model.
I am not yet familiar with the details of the relationship between vaadin-quarkus and vaadin-quarkus-extension. Are both maintained by the same community or organization? It's relevant in a sense that maintainers of vaadin-quarkus could request adding it to registry.quarkus.io and users will have two Vaadin Quarkus extensions to choose from.
The other point is, once you fix the metadata of the vaadin-quarkus-extension so it appears as a proper Quarkus extension, if it still depends on vaadin-quarkus, which is also a Quarkus extension, when an Quarkus app is launched in dev mode, the Quarkus Dev UI, users will see two Vaadin Flow extensions, I suppose.
If that's not desirable there are two options to fix it:
- release
vaadin-quarkuswith itsquarkus-extension.yamlcontainingunlisted: true; - re-package
vaadin-quarkus"all the way", i.e. copy and replace all of its content and eliminate that dependency entirely.
Both extensions are maintained by Vaadin.
About the two extensions in Dev UI we already have a ticket about it , and a comment suggested the unlisted property, but it looks like it is not documented (or at least it was not at that time)
@aloubyansky Do you think the approach in this commit could be correct for the vaadin-quarkus-extension (in combination with the unlisted property on the vaadin-quarkus extension)?
Basically it creates a deployment module for vaadin-quarkus-extension using a filtered version of the vaadin-quarkus metadata yaml as a template.
Yes, that should work.
While waiting for a proper fix for the vaadin-quarkus-extension, please note that the extension works fine with Quarkus 3.24.2. Thanks @aloubyansky for the change in the Quarkus codebase.
Should have been fixed by #7804 and ported to all relevant branches
@aloubyansky we release vaadin-quarkus-extension 24.8.3 with its own deployment artifact. Do you mind taking a look at it to see if it is compliant with Quarkus standards?
Looks clean, @mcollovati, thanks! I also checked how it looks in the Quarkus Dev UI.
Closing as the recent changes fixed the issue
Also BTW - working great with Quarkus 3.24.2!
Thanks for the quick responses on this!