quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.85k stars 2.7k forks source link

MethodNotFoundException io.netty.buffer.ByteBuf.isContiguous() #8391

Closed barthanssens closed 4 years ago

barthanssens commented 4 years ago

Describe the bug

With a very simple (hello-world-like, based on https://quarkus.io/guides/rest-client) example with quarkus bom, quarkus-resteasy and quarkus-rest-client in the pom.xml, I get a warning / exception

Expected behavior

No warning

Actual behavior

WARN [io.net.cha.DefaultChannelPipeline] (vert.x-eventloop-thread-6) An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.: java.lang.NoSuchMethodError: 'boolean io.netty.buffer.ByteBuf.isContiguous()' at io.netty.handler.codec.ByteToMessageDecoder$1.cumulate(ByteToMessageDecoder.java:83) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:274) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) at io.vertx.core.http.impl.Http1xOrH2CHandler.end(Http1xOrH2CHandler.java:61) at io.vertx.core.http.impl.Http1xOrH2CHandler.channelRead(Http1xOrH2CHandler.java:38)

Environment (please complete the following information):

Quarkus 1.3.1 on AdoptOpenJDK 11, MS-Windows 10 64-bit, with maven 3.6.3 in Netbeans 11

Additional context

There is an easy work-around: explicitly adding the latest netty buffer in the pom.xml fixes the issue

<dependency>
 <groupId>io.netty</groupId>
 <artifactId>netty-buffer</artifactId>
 <version>4.1.48.Final</version>
</dependency> 
stuartwdouglas commented 4 years ago

What does mvn dependency:tree look like? Can you reproduce this with the Quickstart from the quickstarts repo, I just tried and I could not reproduce it.

barthanssens commented 4 years ago

I haven't tried the quickstart yet, so I'll give that one a try

Dependency tree:

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ cbe-proxy ---
[INFO] be.fedict.lodtools:cbe-proxy:jar:1.4
[INFO] +- io.quarkus:quarkus-bom:pom:1.3.1.Final:compile
[INFO] +- io.quarkus:quarkus-resteasy:jar:1.3.1.Final:compile
[INFO] |  +- io.quarkus:quarkus-vertx-http:jar:1.3.1.Final:compile
[INFO] |  |  +- io.quarkus:quarkus-development-mode-spi:jar:1.3.1.Final:compile
[INFO] |  |  +- io.quarkus.security:quarkus-security:jar:1.0.1.Final:compile
[INFO] |  |  +- jakarta.enterprise:jakarta.enterprise.cdi-api:jar:2.0.2:compile
[INFO] |  |  |  \- jakarta.el:jakarta.el-api:jar:3.0.3:compile
[INFO] |  |  +- io.quarkus:quarkus-vertx-core:jar:1.3.1.Final:compile
[INFO] |  |  |  +- io.quarkus:quarkus-netty:jar:1.3.1.Final:compile
[INFO] |  |  |  |  +- io.netty:netty-codec:jar:4.1.45.Final:compile
[INFO] |  |  |  |  \- io.netty:netty-handler:jar:4.1.45.Final:compile
[INFO] |  |  |  \- io.vertx:vertx-core:jar:3.8.5:compile
[INFO] |  |  |     +- io.netty:netty-common:jar:4.1.42.Final:compile
[INFO] |  |  |     +- io.netty:netty-buffer:jar:4.1.42.Final:compile
[INFO] |  |  |     +- io.netty:netty-transport:jar:4.1.42.Final:compile
[INFO] |  |  |     +- io.netty:netty-handler-proxy:jar:4.1.42.Final:compile
[INFO] |  |  |     |  \- io.netty:netty-codec-socks:jar:4.1.42.Final:compile
[INFO] |  |  |     +- io.netty:netty-codec-http:jar:4.1.42.Final:compile
[INFO] |  |  |     +- io.netty:netty-codec-http2:jar:4.1.42.Final:compile
[INFO] |  |  |     +- io.netty:netty-resolver:jar:4.1.42.Final:compile
[INFO] |  |  |     +- io.netty:netty-resolver-dns:jar:4.1.42.Final:compile
[INFO] |  |  |     |  \- io.netty:netty-codec-dns:jar:4.1.42.Final:compile
[INFO] |  |  |     \- com.fasterxml.jackson.core:jackson-core:jar:2.9.9:compile
[INFO] |  |  \- io.vertx:vertx-web:jar:3.8.5:compile
[INFO] |  |     +- io.vertx:vertx-web-common:jar:3.8.5:compile
[INFO] |  |     +- io.vertx:vertx-auth-common:jar:3.8.5:compile
[INFO] |  |     \- io.vertx:vertx-bridge-common:jar:3.8.5:compile
[INFO] |  \- io.quarkus:quarkus-resteasy-server-common:jar:1.3.1.Final:compile
[INFO] |     \- jakarta.validation:jakarta.validation-api:jar:2.0.2:compile
[INFO] +- io.quarkus:quarkus-rest-client:jar:1.3.1.Final:compile
[INFO] |  +- io.quarkus:quarkus-core:jar:1.3.1.Final:compile
[INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] |  |  +- jakarta.inject:jakarta.inject-api:jar:1.0:compile
[INFO] |  |  +- io.smallrye.config:smallrye-config:jar:1.7.0:compile
[INFO] |  |  |  \- io.smallrye.config:smallrye-config-common:jar:1.7.0:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile
[INFO] |  |  +- org.jboss.logmanager:jboss-logmanager-embedded:jar:1.0.4:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging-annotations:jar:2.1.0.Final:compile
[INFO] |  |  +- org.jboss.threads:jboss-threads:jar:3.0.1.Final:compile
[INFO] |  |  +- org.slf4j:slf4j-api:jar:1.7.29:compile
[INFO] |  |  +- org.jboss.slf4j:slf4j-jboss-logging:jar:1.2.0.Final:compile
[INFO] |  |  +- org.graalvm.sdk:graal-sdk:jar:19.3.1:compile
[INFO] |  |  \- org.wildfly.common:wildfly-common:jar:1.5.4.Final-format-001:compile
[INFO] |  +- io.quarkus:quarkus-arc:jar:1.3.1.Final:compile
[INFO] |  |  +- io.quarkus.arc:arc:jar:1.3.1.Final:compile
[INFO] |  |  |  \- jakarta.transaction:jakarta.transaction-api:jar:1.3.3:compile
[INFO] |  |  \- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:jar:1.0.1:compile
[INFO] |  +- io.quarkus:quarkus-resteasy-common:jar:1.3.1.Final:compile
[INFO] |  |  +- org.jboss.resteasy:resteasy-core:jar:4.5.3.Final:compile
[INFO] |  |  |  +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:jar:2.0.1.Final:compile
[INFO] |  |  |  +- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:jar:1.0.1.Final:compile
[INFO] |  |  |  +- org.jboss.resteasy:resteasy-core-spi:jar:4.5.3.Final:compile
[INFO] |  |  |  \- org.reactivestreams:reactive-streams:jar:1.0.3:compile
[INFO] |  |  \- com.sun.activation:jakarta.activation:jar:1.2.1:compile
[INFO] |  +- org.jboss.resteasy:resteasy-client-microprofile:jar:4.5.3.Final:compile
[INFO] |  |  +- org.jboss.resteasy:resteasy-client:jar:4.5.3.Final:compile
[INFO] |  |  |  +- org.jboss.resteasy:resteasy-client-api:jar:4.5.3.Final:compile
[INFO] |  |  |  \- commons-io:commons-io:jar:2.5:compile
[INFO] |  |  +- org.eclipse.microprofile.rest.client:microprofile-rest-client-api:jar:1.4.0:compile
[INFO] |  |  \- org.eclipse.microprofile.config:microprofile-config-api:jar:1.4:compile
[INFO] |  +- jakarta.interceptor:jakarta.interceptor-api:jar:1.2.5:compile
[INFO] |  +- org.apache.httpcomponents:httpasyncclient:jar:4.1.4:compile
[INFO] |  |  +- org.apache.httpcomponents:httpcore:jar:4.4.10:compile
[INFO] |  |  \- org.apache.httpcomponents:httpcore-nio:jar:4.4.10:compile
[INFO] |  \- org.jboss.logging:commons-logging-jboss-logging:jar:1.0.0.Final:compile
[INFO] +- io.quarkus:quarkus-junit5:jar:1.3.1.Final:test
[INFO] |  +- io.quarkus:quarkus-bootstrap-core:jar:1.3.1.Final:test
[INFO] |  |  +- org.ow2.asm:asm:jar:7.3.1:test
[INFO] |  |  +- org.apache.maven:maven-embedder:jar:3.6.3:test
[INFO] |  |  |  +- org.apache.maven:maven-settings:jar:3.6.3:test
[INFO] |  |  |  +- org.apache.maven:maven-core:jar:3.6.3:test
[INFO] |  |  |  |  +- org.apache.maven:maven-artifact:jar:3.6.3:test
[INFO] |  |  |  |  \- org.codehaus.plexus:plexus-component-annotations:jar:2.1.0:test
[INFO] |  |  |  +- org.apache.maven:maven-plugin-api:jar:3.6.3:test
[INFO] |  |  |  +- org.apache.maven:maven-model:jar:3.6.3:test
[INFO] |  |  |  +- org.apache.maven:maven-model-builder:jar:3.6.3:test
[INFO] |  |  |  +- org.apache.maven:maven-builder-support:jar:3.6.3:test
[INFO] |  |  |  +- org.apache.maven.resolver:maven-resolver-api:jar:1.4.1:test
[INFO] |  |  |  +- org.apache.maven.resolver:maven-resolver-util:jar:1.4.1:test
[INFO] |  |  |  +- org.apache.maven.shared:maven-shared-utils:jar:3.2.1:test
[INFO] |  |  |  +- com.google.inject:guice:jar:no_aop:4.2.1:test
[INFO] |  |  |  |  \- com.google.guava:guava:jar:25.1-android:test
[INFO] |  |  |  +- org.codehaus.plexus:plexus-utils:jar:3.2.1:test
[INFO] |  |  |  +- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.4:test
[INFO] |  |  |  \- commons-cli:commons-cli:jar:1.4:test
[INFO] |  |  +- org.apache.maven:maven-settings-builder:jar:3.6.3:test
[INFO] |  |  |  +- org.codehaus.plexus:plexus-interpolation:jar:1.25:test
[INFO] |  |  |  \- org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:test
[INFO] |  |  |     \- org.sonatype.plexus:plexus-cipher:jar:1.4:test
[INFO] |  |  +- org.apache.maven:maven-resolver-provider:jar:3.6.3:test
[INFO] |  |  |  +- org.apache.maven:maven-repository-metadata:jar:3.6.3:test
[INFO] |  |  |  +- org.apache.maven.resolver:maven-resolver-spi:jar:1.4.1:test
[INFO] |  |  |  \- org.apache.maven.resolver:maven-resolver-impl:jar:1.4.1:test
[INFO] |  |  +- org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.4.1:test
[INFO] |  |  +- org.apache.maven.resolver:maven-resolver-transport-wagon:jar:1.4.1:test
[INFO] |  |  +- org.apache.maven.wagon:wagon-http:jar:3.3.4:test
[INFO] |  |  |  +- org.apache.maven.wagon:wagon-http-shared:jar:3.3.4:test
[INFO] |  |  |  |  \- org.jsoup:jsoup:jar:1.12.1:test
[INFO] |  |  |  \- org.apache.maven.wagon:wagon-provider-api:jar:3.3.4:test
[INFO] |  |  \- org.apache.maven.wagon:wagon-file:jar:3.3.4:test
[INFO] |  +- io.quarkus:quarkus-test-common:jar:1.3.1.Final:test
[INFO] |  |  +- io.quarkus:quarkus-core-deployment:jar:1.3.1.Final:test
[INFO] |  |  |  +- io.quarkus.gizmo:gizmo:jar:1.0.2.Final:test
[INFO] |  |  |  |  \- org.ow2.asm:asm-util:jar:7.3.1:test
[INFO] |  |  |  |     +- org.ow2.asm:asm-tree:jar:7.3.1:test
[INFO] |  |  |  |     \- org.ow2.asm:asm-analysis:jar:7.3.1:test
[INFO] |  |  |  \- io.quarkus:quarkus-builder:jar:1.3.1.Final:test
[INFO] |  |  +- io.quarkus:quarkus-jsonp-deployment:jar:1.3.1.Final:test
[INFO] |  |  |  \- io.quarkus:quarkus-jsonp:jar:1.3.1.Final:test
[INFO] |  |  |     \- org.glassfish:jakarta.json:jar:1.1.6:test
[INFO] |  |  \- org.jboss:jandex:jar:2.1.3.Final:test
[INFO] |  \- org.junit.jupiter:junit-jupiter:jar:5.6.0:test
[INFO] |     +- org.junit.jupiter:junit-jupiter-api:jar:5.6.0:test
[INFO] |     |  +- org.apiguardian:apiguardian-api:jar:1.1.0:test
[INFO] |     |  +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] |     |  \- org.junit.platform:junit-platform-commons:jar:1.6.0:test
[INFO] |     +- org.junit.jupiter:junit-jupiter-params:jar:5.6.0:test
[INFO] |     \- org.junit.jupiter:junit-jupiter-engine:jar:5.6.0:test
[INFO] |        \- org.junit.platform:junit-platform-engine:jar:1.6.0:test
[INFO] \- io.rest-assured:rest-assured:jar:4.3.0:test
[INFO]    +- org.codehaus.groovy:groovy:jar:3.0.2:test
[INFO]    +- org.codehaus.groovy:groovy-xml:jar:3.0.2:test
[INFO]    +- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
[INFO]    |  +- commons-logging:commons-logging:jar:1.2:compile
[INFO]    |  \- commons-codec:commons-codec:jar:1.9:compile
[INFO]    +- org.apache.httpcomponents:httpmime:jar:4.5.3:test
[INFO]    +- org.hamcrest:hamcrest:jar:2.1:test
[INFO]    +- org.ccil.cowan.tagsoup:tagsoup:jar:1.2.1:test
[INFO]    +- io.rest-assured:json-path:jar:4.3.0:test
[INFO]    |  +- org.codehaus.groovy:groovy-json:jar:3.0.2:test
[INFO]    |  \- io.rest-assured:rest-assured-common:jar:4.3.0:test
[INFO]    \- io.rest-assured:xml-path:jar:4.3.0:test
[INFO]       +- org.apache.commons:commons-lang3:jar:3.4:test
[INFO]       +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.2:test
[INFO]       |  \- jakarta.activation:jakarta.activation-api:jar:1.2.1:test
[INFO]       +- com.sun.xml.bind:jaxb-osgi:jar:2.3.0.1:test
[INFO]       \- org.apache.sling:org.apache.sling.javax.activation:jar:0.1.0:test
[INFO]          \- javax.activation:activation:jar:1.1.1:test

Starting with mvn compile quarkus:dev works without error, but the warning / exception is thrown as soon as I try a GET request.

stuartwdouglas commented 4 years ago

Looks like the older version in being pulled in by vert.x, however this should not happen because we include the netty bom. What does your pom look like?

barthanssens commented 4 years ago

I spotted the problem, my bad, I didn't use quarkus-bom correctly in my pom.xml

I've compared it to the one from the quickstart, and now it works as expected (now uses netty buffer 4.1.45 instead of .42) Thanks for the help and sorry for the confusion.

Paul6552 commented 3 years ago

@barthanssens Can you please explain your solution a bit more? I have the same problem like you, I have quarkus-universe-bom in my pom.xml, but I still get the error message:


<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>at.tanzauswertung.portal</groupId>
    <artifactId>portal-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<groupId>at.tanzauswertung.portal-backend</groupId>
<artifactId>portal-backend</artifactId>

<properties>
    <webapp.dependency.phase>prepare-package</webapp.dependency.phase>
    <surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
    <lombok.version>1.18.16</lombok.version>
    <keycloak.version>12.0.2</keycloak.version>
    <testcontainers.version>1.15.1</testcontainers.version>
    <quarkus-plugin.version>1.13.4.Final</quarkus-plugin.version>
    <quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
    <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
    <quarkus.platform.version>1.13.4.Final</quarkus.platform.version>
    <version.apache-poi>4.1.2</version.apache-poi>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <compiler-plugin.version>3.8.1</compiler-plugin.version>
    <docker-plugin.version>0.28.0</docker-plugin.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${quarkus.platform.group-id}</groupId>
            <artifactId>${quarkus.platform.artifact-id}</artifactId>
            <version>${quarkus.platform.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>

    <dependency>
        <groupId>at.tanzauswertung.api</groupId>
        <artifactId>pea-portal-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>2.9.9</version>
    </dependency>
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.16.0</version>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>lucene-analyzers-common</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-queryparser</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.jfree</groupId>
                <artifactId>jcommon</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.jfree</groupId>
                <artifactId>jfreechart</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.eclipse.jdt.core.compiler</groupId>
                <artifactId>ecj</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.codehaus.castor</groupId>
                <artifactId>castor-xml</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.olap4j</groupId>
                <artifactId>olap4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.ibm.icu</groupId>
                <artifactId>icu4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>${version.apache-poi}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>${version.apache-poi}</version>
    </dependency>
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-core</artifactId>
        <version>${keycloak.version}</version>
    </dependency>
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-admin-client</artifactId>
        <version>${keycloak.version}</version>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-arc</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-mailer</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-keycloak-admin-client</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-narayana-jta</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-hibernate-orm</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-hibernate-orm-panache</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-scheduler</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.spec.javax.ws.rs</groupId>
        <artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-jpamodelgen</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-agroal</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-rest-client</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy-jackson</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-jdbc-postgresql</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-undertow</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-keycloak-authorization</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-oidc</artifactId>
    </dependency>
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-junit5</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-test-h2</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>${testcontainers.version}</version>
    </dependency>
    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>postgresql</artifactId>
        <version>${testcontainers.version}</version>
    </dependency>
    <dependency>
        <groupId>com.github.dasniko</groupId>
        <artifactId>testcontainers-keycloak</artifactId>
        <version>1.5.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-junit5-mockito</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-flyway</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${surefire-plugin.version}</version>
            <configuration>
                <skipTests>true</skipTests>
                <systemProperties>
                    <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                </systemProperties>
            </configuration>
        </plugin>
        <plugin>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-maven-plugin</artifactId>
            <version>${quarkus-plugin.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>build</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/classes/META-INF/resources/portal
                        </outputDirectory>
                        <resources>
                            <resource>
                                <directory>${project.parent.basedir}/portal-webapp/build/</directory>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<profiles>
    <profile>
        <id>skipFrontendBuild</id>
        <properties>
            <surefire-plugin.version>${surefire-plugin.version}</surefire-plugin.version>
            <webapp.dependency.phase>none</webapp.dependency.phase>
        </properties>
    </profile>
</profiles>