如何将自定义文件类型添加至quarkusDev监听列表以实现热重载
解决Quarkus开发模式下自定义文本文件的热重载问题
1. 标记自定义目录为Gradle源输入
在build.gradle中,将你的自定义模板目录注册为Gradle的源集合,让Gradle能追踪这些文件的变化:
sourceSets { main { resources { srcDirs += 'src/main/my-templates' // 替换为你的自定义目录路径 include '**/*.txt' // 匹配你的文本文件后缀 } } }
同时给代码生成任务明确输入输出依赖,确保文件变更时触发重新生成:
task generateJavaFromTemplates(type: JavaExec) { // 配置你的代码生成器,比如主类、运行参数 classpath = sourceSets.main.runtimeClasspath mainClass = 'com.example.TemplateCodeGenerator' // 声明输入:自定义目录下的所有文本文件 inputs.dir sourceSets.main.resources.srcDirs.find { it.path.contains('my-templates') } // 声明输出:生成的Java代码存放目录 outputs.dir 'build/generated-sources/my-codegen' } // 让编译任务依赖代码生成任务,保证编译前先生成代码 compileJava.dependsOn generateJavaFromTemplates // 将生成目录加入Java源目录,让Gradle编译时能识别生成的代码 sourceSets.main.java.srcDirs += 'build/generated-sources/my-codegen'
2. 让Quarkus Dev模式监测自定义目录
Quarkus开发模式默认只监测标准源目录,需要手动把自定义目录加入监测列表,在build.gradle中配置:
quarkusDev { // 添加自定义目录到热重载监测列表 watch.add 'src/main/my-templates' }
3. 验证热重载效果
启动Quarkus开发模式:
./gradlew quarkusDev
修改自定义目录下的任意文本文件,Quarkus会检测到变化,触发Gradle重新执行代码生成任务,编译新生成的Java代码后自动热重载应用。
注意事项
- 务必确保代码生成任务的
inputs和outputs配置准确,Gradle的增量构建才能生效,避免无意义的重复生成。 - 如果使用第三方代码生成插件,要确认插件已正确声明输入输出依赖,否则可能无法触发增量构建。
内容的提问来源于stack exchange,提问作者Kostas Pagratis
相关产品推荐
相关产品推荐

