Skip to content

quarkus-maven-plugin pulls bad -deployment dependencies #5648

@ppalaga

Description

@ppalaga

Originally reported as apache/camel-quarkus#454

Steps to reproduce:

  1. generate a starter app with just RESTEasy JAX-RS and Camel Quarkus Netty HTTP on https://code.quarkus.io or use the attached
    code-with-quarkus.zip
  2. ./mvnw clean install results in
[INFO] Running org.acme.ExampleResourceTest
10:14:57,734 INFO  [org.jbo.threads] JBoss Threads version 3.0.0.Final
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.018 s <<< FAILURE! - in org.acme.ExampleResourceTest
[ERROR] testHelloEndpoint  Time elapsed: 0.009 s  <<< ERROR!
org.junit.jupiter.api.extension.TestInstantiationException:
TestInstanceFactory [io.quarkus.test.junit.QuarkusTestExtension] failed to instantiate test class [org.acme.ExampleResourceTest]: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.vertx.core.deployment.VertxCoreProcessor#eventLoop threw an exception: java.lang.IllegalArgumentException: Build item class must be leaf (final) types: class io.quarkus.netty.deployment.EventLoopSupplierBuildItem
	at io.quarkus.builder.item.BuildItem.<init>(BuildItem.java:22)
	at io.quarkus.builder.item.SimpleBuildItem.<init>(SimpleBuildItem.java:10)
	at io.quarkus.netty.deployment.EventLoopSupplierBuildItem.<init>(EventLoopSupplierBuildItem.java:13)
	at io.quarkus.vertx.core.deployment.VertxCoreProcessor.eventLoop(VertxCoreProcessor.java:54)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:941)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
	at java.lang.Thread.run(Thread.java:748)
	at org.jboss.threads.JBossThread.run(JBossThread.java:479)

Caused by: java.lang.RuntimeException:
io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.vertx.core.deployment.VertxCoreProcessor#eventLoop threw an exception: java.lang.IllegalArgumentException: Build item class must be leaf (final) types: class io.quarkus.netty.deployment.EventLoopSupplierBuildItem
	at io.quarkus.builder.item.BuildItem.<init>(BuildItem.java:22)
	at io.quarkus.builder.item.SimpleBuildItem.<init>(SimpleBuildItem.java:10)
	at io.quarkus.netty.deployment.EventLoopSupplierBuildItem.<init>(EventLoopSupplierBuildItem.java:13)
	at io.quarkus.vertx.core.deployment.VertxCoreProcessor.eventLoop(VertxCoreProcessor.java:54)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:941)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
	at java.lang.Thread.run(Thread.java:748)
	at org.jboss.threads.JBossThread.run(JBossThread.java:479)

EXPECTED: it should pass

Some observations

  • The EventLoopSupplierBuildItem is made final in Quarkus 1.0.0.CR2 while it is still broken in CR1.
  • The Universe BOM pulls camel-quarkus-netty 0.4.0 which depends on quarkus-netty 1.0.0.CR1 - that's how the bad version comes into the play.
  • The Maven compile class path of the reproducer project contains the correct quarkus-netty version 1.0.0.CR2

Possible cause

quarkus-maven-plugin probably relies on quarkus-universe-bom-deployment and the root cause seems to be there: it imports camel-quarkus-parent instead of camel-quarkus-bom-deployment
https://github.com/quarkusio/quarkus-platform/blob/1.0.0.CR2/bom/deployment/pom.xml#L40

WDYT @aloubyansky ?

Metadata

Metadata

Assignees

Labels

kind/bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions