【问题标题】:Quarkus, Gradle, and External dependencies; Objects from external dependency not serializable only in native modeQuarkus、Gradle 和外部依赖项;来自外部依赖的对象仅在本机模式下不可序列化
【发布时间】:2021-12-24 22:28:27
【问题描述】:

我有一个 quarkus 应用程序https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/tree/main/software/open-qm-base-station,它依赖于我在本地创建和构建的依赖项(它在本地 maven 存储库中可用)。我已经采取了必要的步骤来使用 Quarkus(空的 beans.xml 文件),并且在常规 jar 模式下运行时工作正常。

但是,当我在 Native 模式下操作时,代码无法从依赖项中生成对象的头部或尾部,通常在反序列化发生时会抛出配合:

Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.ebp.openQuarterMaster.lib.core.rest.ErrorMessage and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

我正在运行的测试证实了这一点(并在实践中看到);在 dev/jar 模式下运行时,一切都很好。原生是不行的。关于如何引入非 jdex 依赖项,我有什么遗漏吗?我之前尝试过 jandex 插件,但从未见过它们真正起作用。

要明确:

./gradlew test -> 工作正常

./gradlew testNative -> 失败

如果您自己进行测试,您需要先在本地发布依赖项,然后再使用 ./gradlew publishToMavenLocal:https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/tree/main/software/libs/open-qm-core 尝试 quarkus 应用程序

【问题讨论】:

    标签: java dependencies quarkus quarkus-native


    【解决方案1】:

    Quarkus Native 不包含外部依赖项。 你需要自己加入

    Link to SoF response

    【讨论】:

    • 这个解决方案看起来......很傻。您是否计划在未来提供更简单的解决方案?
    • 您可以构建具有所有依赖项的 uber-jar。或者,如果您使用 Docker,您可以编写 Dockerfile,使您的所有文件和依赖项都进入工作目录
    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多