quarkus 整个包的本机反射配置

yan*_*vsh 7 reflection native kotlin quarkus

我正在构建 quarkus 本机并使用 Stripe sdk 作为外部库。为了支持Stripe sdk,我需要创建reflection-config.json文件并在application.properties中设置quarkus.native.additional-build-args=-H:ReflectionConfigurationFiles=reflection-config.json

Reflection -config.json看起来像这样:

  {
    "name": "com.stripe.model.Customer",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredFields": true,
    "allPublicFields": true
  },
  {
    "name": "com.stripe.model.Customer$InvoiceSettings",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredFields": true,
    "allPublicFields": true
  },
  {
    "name": "com.stripe.model.StripeError",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredFields": true,
    "allPublicFields": true
  },
  {
    "name": "com.stripe.model.PaymentIntent",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredFields": true,
    "allPublicFields": true
  },
  {
    "name": "com.stripe.model.PaymentMethod",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredFields": true,
    "allPublicFields": true
  }....
Run Code Online (Sandbox Code Playgroud)

等等。它包含太多类。我的问题是是否有办法设置整个包而不是大量的类?例如:

  {
    "name": "com.stripe.model.*",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredFields": true,
    "allPublicFields": true
  }
Run Code Online (Sandbox Code Playgroud)

没有找到任何提及它。

Gui*_*met 3

您可以使用 Quarkus 扩展来做到这一点,从索引中获取类并ReflectiveClassBuildItem为与包匹配的所有类生成一个 。

这并不难,但需要一些工作。

与您正在做的事情相比,一个不太冗长的替代方案是使用@RegisterForReflection(targets = { ... }).

这是目前唯一的选择。