当前位置: 首页
编程语言
Quarkus主方法在依赖模块中的定义及依赖索引配置

Quarkus主方法在依赖模块中的定义及依赖索引配置

热心网友 时间:2026-07-04
转载
如果你希望将 Quarkus 的 @QuarkusMain 主类放置在外部依赖(例如 SDK)中,这完全是可行的,但前提是必须显式启用该依赖的类路径索引机制。否则,运行时将无法识别你的主类,应用也就无法正常启动。下面就来详细解析如何通过 quarkus-index-dependency 或 jandex-maven-plugin 这两种方式,让跨模块的主入口稳定运行。

Quarkus 允许你将带有 @QuarkusMain 注解的主类定义在外部依赖模块中,例如一个独立的 SDK。然而,关键在于,框架在构建原生镜像或 JVM 模式启动时,必须预先知道哪些类携带了 @QuarkusMain、@ApplicationScoped 等关键注解。这一识别过程依赖于 Jandex 索引

默认情况下,Quarkus 只会自动索引当前模块以及直接声明的 Quarkus 扩展依赖——其他普通依赖中的注解类,它并不会自动扫描。这就引出了一个问题:如果 @QuarkusMain 所在的类定义在像 test-sdk 这样的纯业务 SDK 依赖中,而你并未为其配置索引,Quarkus 启动器就会完全忽略这个主类。最终结果是,日志静默无输出,应用毫无反应,形成典型的“静默失败”场景。

✅ 终极解决方案:正确启用依赖索引

要让 test-sdk 中的 @QuarkusMain 被成功识别,有以下两种主流且高效的实现路径。

方案一:使用 quarkus-index-dependency(推荐,原生支持)

在 test-project 的 pom.xml 中,为 test-sdk 这个依赖添加一个分类器即可:

    org.example    test-sdk    1.0.0        quarkus-index-dependency

⚠️ 注意:此方案要求 test-sdk 在构建时已生成带有 quarkus-index-dependency 分类器的 JAR 文件。因此,你需要在 test-sdk 的 pom.xml 中配置 Quarkus Maven 插件,使其自动产出该分类器:

    io.quarkus    quarkus-maven-plugin    ${quarkus.version}                                        build                        

Quarkus Maven 插件会为项目自动生成一个包含索引的分类器 JAR,其中内嵌了 META-INF/jandex.idx 文件。这免去了额外配置 Jandex 插件的繁琐步骤。

方案二:手动集成 jandex-maven-plugin(兼容旧版或自定义场景)

如果你的 SDK 未使用 Quarkus 插件构建,或者你需要更精细的控制,则可以在 test-sdk 的 pom.xml 中直接添加 jandex 插件:

    org.jboss.jandex    jandex-maven-plugin    1.3.2                        make-index                            jandex                        

构建完成后,test-sdk-1.0.0.jar 内部将会包含一个 META-INF/jandex.idx 文件。此时,test-project 只需正常引用该 JAR,Quarkus 就能自动发现并识别它。

来源:https://www.php.cn/faq/2751208.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
如何在ThinkPHP中实现定时任务与命令行调度方法

如何在ThinkPHP中实现定时任务与命令行调度方法

用ThinkPHP实现定时任务时,很多开发者第一步就卡在命令行报错上,直接输入php think your:command却无法识别——这种情况绝大多数是因为命令类的注册方式存在问题。下面先梳理几个核心要点。 ThinkPHP 6 中 think 命令如何正确触发自定义指令 直接运行 php thi

时间:2026-07-04 06:55
ThinkPHP API接口防重放攻击实现方法

ThinkPHP API接口防重放攻击实现方法

先说几个核心判断:API防重放攻击这件事,做对了是道防火墙,做错了就是个心理安慰。很多开发者到踩坑了才明白——验签这东西,放错位置、漏掉字段、存错nonce,每一环都能让整个安全体系直接归零。 验签必须放在中间件里,不能在控制器里写 ThinkPHP 的请求生命周期中,中间件是唯一能在路由匹配、参数

时间:2026-07-04 06:55
ThinkPHP文件上传必须验证扩展名安全必要性分析

ThinkPHP文件上传必须验证扩展名安全必要性分析

在使用ThinkPHP进行文件上传时,ext扩展名验证通常是开发者首先接触的关键环节。但你真的了解它的实际工作原理吗?它仅比对文件名后缀,而不读取文件内容,甚至对空格和大小写都极其敏感。更为重要的是——它是TP文件上传验证五层防线中不可忽视的第一道关卡,一旦配置遗漏,整个validate验证链将直接

时间:2026-07-04 06:55
ThinkPHP关联模型自动写入与更新使用教程

ThinkPHP关联模型自动写入与更新使用教程

需要明确的是,ThinkPHP关联模型并没有提供所谓的“自动写入 更新”魔法开关。所谓的“自动”功能,实际上都需要开发者手动编写配置逻辑才能生效。核心原则在于:主模型和从模型必须分开独立处理,时间戳字段和业务字段需依靠修改器或钩子接管;批量操作则要规规矩矩地绕过模型逻辑来执行——只有理解透彻这些要点

时间:2026-07-04 06:55
BoxLayout中仅居中一个组件其他默认左对齐

BoxLayout中仅居中一个组件其他默认左对齐

在 Java Swing 中使用 BoxLayout 的 Y_AXIS 方向布局时,很多初学者容易掉进一个常见陷阱:希望将某个组件单独设置为中心对齐,但当调用 `setAlignmentX(CENTER_ALIGNMENT)` 后,却发现其他组件也跟着发生了偏移,完全达不到预期效果。实际上,关键之处

时间:2026-07-04 06:54
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜