quarkus-maven-plugin pulls bad -deployment dependencies

Created on 21 Nov 2019  路  7Comments  路  Source: quarkusio/quarkus

Originally reported as https://github.com/apache/camel-quarkus/issues/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 ?

kinbug

All 7 comments

Looking

Hm... changing this line to camel-quarkus-bom-deployment https://github.com/quarkusio/quarkus-platform/blob/1.0.0.CR2/bom/deployment/pom.xml#L40 does not help.

I see how that happens. Working on a fix.

This is probably something we want fixed for Final.

I marked it as backport?.

The linked PR was tested on the attached project and passed the platform testsuite.

Thanks, @aloubyansky !

Actually, thank you @ppalaga, that's a pretty nasty bug.

Was this page helpful?
0 / 5 - 0 ratings