GraalVM nativeTest任务在Windows 10环境下无法正常执行求助
GraalVM Gradle插件提供的nativeTest任务,用于在应用原生镜像上运行测试,该功能在macOS上正常工作,但到了Windows 10环境,虽然构建能成功,测试却会被跳过,仅显示如下提示:
de.bugged.NativeTestTest > testItWorks() SKIPPED: Test is not bean. Either the test does not satisfy requirements defined by @Requires or annotation processing is not enabled. If the latter ensure annotation processing is enabled in your IDE.
哪怕是全新创建的、已启用GraalVM特性的Micronaut项目,自带的testItWorks测试执行nativeTest时也会遇到同样的跳过问题,无额外错误提示。
以下是针对该问题的排查和解决步骤:
确认注解处理器配置生效
Windows环境下,Gradle注解处理器的启用逻辑和macOS存在差异,需在build.gradle或build.gradle.kts中明确配置:
若使用Groovy DSL:tasks.withType(JavaCompile) { options.annotationProcessorPath = configurations.annotationProcessor options.compilerArgs.add("-Amicronaut.processing.group=你的项目包名") options.compilerArgs.add("-Amicronaut.processing.module=你的模块名称") }若使用Kotlin DSL:
tasks.withType<JavaCompile> { options.annotationProcessorPath = configurations.annotationProcessor options.compilerArgs.add("-Amicronaut.processing.group=你的项目包名") options.compilerArgs.add("-Amicronaut.processing.module=你的模块名称") }同时确保
annotationProcessor依赖已正确引入,Micronaut项目一般需包含:annotationProcessor("io.micronaut:micronaut-inject-java")检查GraalVM环境变量配置
Windows上需保证GRAALVM_HOME环境变量指向正确的GraalVM安装目录,且PATH中包含%GRAALVM_HOME%\bin。另外可在gradle.properties中指定Gradle使用的JDK:org.gradle.java.home=%GRAALVM_HOME%给nativeTest任务显式添加注解处理参数
部分场景下Windows的nativeTest任务未正确传递注解处理器参数,需手动配置:
Groovy DSL:nativeTest { jvmArgs("-Amicronaut.processing.enabled=true") systemProperty("micronaut.processing.enabled", "true") }Kotlin DSL:
nativeTest { jvmArgs("-Amicronaut.processing.enabled=true") systemProperty("micronaut.processing.enabled", "true") }排查安全软件干扰
Windows Defender或第三方防火墙可能阻止GraalVM生成原生镜像或执行测试,可临时关闭实时保护,或将GraalVM安装目录、项目目录添加到安全软件白名单后,重新执行nativeTest任务。升级相关组件版本
旧版本的GraalVM或Micronaut Gradle插件在Windows上可能存在兼容性问题,建议升级到最新稳定版:- GraalVM:选用最新社区版(22.x及以上版本)
- Micronaut Gradle插件:在
settings.gradle中更新版本:plugins { id("io.micronaut.application") version "4.x.x" }
内容的提问来源于stack exchange,提问作者karmoffle

