Quarkus、Gradle 和外部依赖项;来自外部依赖的对象仅在本机模式下不可序列化
Quarkus, Gradle, and External dependencies; Objects from external dependency not serializable only in native mode
我有一个 quarkus 应用程序,https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/tree/main/software/open-qm-base-station 它依赖于我在本地制作和构建的依赖项(它在本地 maven 存储库中可用)。我已经采取必要的步骤使它与 Quarkus(空 beans.xml
文件)一起工作,并且在常规 jar 模式下运行时工作正常。
但是,当我在本机模式下运行时,代码无法根据依赖项生成对象的正面或反面,通常会在 de/serialization 发生时抛出异常:
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 模式下一切正常。原生是不行的。关于如何引入非 jandex 依赖项,我有什么遗漏吗?我以前尝试过 jandex 插件,但从未见过它们真正起作用。
要明确:
./gradlew test
-> 工作正常
./gradlew testNative
-> 失败
如果您自己进行测试,您需要先在本地发布依赖项,然后再尝试使用 ./gradlew publishToMavenLocal
的 quarkus 应用程序:https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/tree/main/software/libs/open-qm-core
Quarkus Native 不包含外部依赖项。
您需要自己包含
我有一个 quarkus 应用程序,https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/tree/main/software/open-qm-base-station 它依赖于我在本地制作和构建的依赖项(它在本地 maven 存储库中可用)。我已经采取必要的步骤使它与 Quarkus(空 beans.xml
文件)一起工作,并且在常规 jar 模式下运行时工作正常。
但是,当我在本机模式下运行时,代码无法根据依赖项生成对象的正面或反面,通常会在 de/serialization 发生时抛出异常:
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 模式下一切正常。原生是不行的。关于如何引入非 jandex 依赖项,我有什么遗漏吗?我以前尝试过 jandex 插件,但从未见过它们真正起作用。
要明确:
./gradlew test
-> 工作正常
./gradlew testNative
-> 失败
如果您自己进行测试,您需要先在本地发布依赖项,然后再尝试使用 ./gradlew publishToMavenLocal
的 quarkus 应用程序:https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/tree/main/software/libs/open-qm-core
Quarkus Native 不包含外部依赖项。 您需要自己包含