Quarkus 扩展 - 从依赖库中删除 class 或替换 class 的一部分
Quarkus Extension - Remove a class from dependent library or replace part of a class
在自定义 Quarkus 扩展中,我想集成一个现有的 java 当前与 Quarkus 不兼容的库。
是否有以下用例的示例:
从依赖库中删除 java class(库被引用为 maven-dependency)- 在这种情况下,我将在运行时提供兼容的实现-模块。
替换现有 class 的特定部分形成依赖库(例如接口的默认实现)
谢谢,托马斯
对于第一种情况,您可以使用 io.quarkus.deployment.builditem.RemovedResourceBuildItem
让 Quarkus 从依赖项中删除 class。
对于第二种情况,您可能需要使用 io.quarkus.deployment.builditem.BytecodeTransformerBuildItem
来声明一个 ASM class 转换器,它可以任意方式更改 class。
如果您只想更改本机模式的 class,使用 com.oracle.svm.core.annotate.TargetClass
和 com.oracle.svm.core.annotate.Substitute
.
会更容易
在自定义 Quarkus 扩展中,我想集成一个现有的 java 当前与 Quarkus 不兼容的库。
是否有以下用例的示例:
从依赖库中删除 java class(库被引用为 maven-dependency)- 在这种情况下,我将在运行时提供兼容的实现-模块。
替换现有 class 的特定部分形成依赖库(例如接口的默认实现)
谢谢,托马斯
对于第一种情况,您可以使用 io.quarkus.deployment.builditem.RemovedResourceBuildItem
让 Quarkus 从依赖项中删除 class。
对于第二种情况,您可能需要使用 io.quarkus.deployment.builditem.BytecodeTransformerBuildItem
来声明一个 ASM class 转换器,它可以任意方式更改 class。
如果您只想更改本机模式的 class,使用 com.oracle.svm.core.annotate.TargetClass
和 com.oracle.svm.core.annotate.Substitute
.