Dropwizard - 运行 一个不添加包的独立命令

Dropwizard - running a standalone command without adding bundles

我有一个带有 swagger-jaxrs2 生成 openapi 规范的 Dropwizard 应用程序。例如,我想要一个命令 运行 就这样 java -jar app.jar generate build/spec.json,但是因为我配置了 Hibernate,它要求我指定配置文件,即使它与命令完全无关,并且NPEs.

尝试指定配置会导致此错误:

unrecognized arguments: 'src/test/resources/configs/configuration.test.yml'

因为我还没有显式添加配置参数。

有没有办法解决这个问题?我必须每次都指定配置?真的很烦人:D


编辑:最终只是劫持 main 并以这种方式输出它,因为在此实例中我只需要访问类路径。想法由 Dropwizard command line input

提供

您可以定义一个扩展 io.dropwizard.cli.Command 的特殊命令,它不需要将配置作为参数传递,因为它不是 io.dropwizard.cli.ConfiguredCommand。 只需在 io.dropwizard.Application#initialize 的覆盖中注册它并调用 bootstrap.addCommand(new YourSpecialCommand());

它将允许您调用:
java -jar app.jar key-of-your-special-command <any args you define in your command>