pom.xml中maven-surefire-plugin配置的HADOOP_CLASSPATH无法被JUnit识别
问题原因
- maven-surefire-plugin存在默认的环境变量排除规则,
HADOOP_CLASSPATH属于官方预设的、会被自动过滤的环境变量列表中的项,因此你在environmentVariables中配置的值不会被传递到测试进程中 - 自定义的
HADOOP_TEST不在默认排除列表中,因此可以正常传递
解决方案
在maven-surefire-plugin的配置中添加excludedEnvironmentVariables配置,清空默认排除列表,或者指定移除HADOOP_CLASSPATH的排除规则,参考配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.2</version> <configuration> <environmentVariables> <HADOOP_CLASSPATH>你配置的HADOOP_CLASSPATH实际值</HADOOP_CLASSPATH> <HADOOP_TEST>自定义测试变量</HADOOP_TEST> </environmentVariables> <!-- 方法1:清空所有默认排除的环境变量 --> <excludedEnvironmentVariables /> <!-- 方法2:仅移除HADOOP_CLASSPATH的排除规则,保留其他默认排除项,安全性更高 <excludedEnvironmentVariables> ${surefire.excludedEnvironmentVariables} !HADOOP_CLASSPATH </excludedEnvironmentVariables> --> </configuration> </plugin>
额外注意事项
- 若使用IntelliJ执行测试,建议进入
设置>构建、执行、部署>构建工具>Maven>运行器,将测试运行器设置为Maven,避免IntelliJ默认测试运行器忽略maven插件配置导致不生效 - 配置完成后可在测试代码中添加
System.out.println(System.getenv("HADOOP_CLASSPATH"))验证变量是否正常读取
内容的提问来源于stack exchange,提问作者Kicker
相关产品推荐
相关产品推荐

