Gradle运行时通过CMD传入的值未被识别问题排查
问题解决:运行时传入的参数未覆盖默认值
核心原因
你代码里用System.getenv("infrastructurePath")读取的是系统环境变量,但在Gradle命令中用-D传递的是JVM系统属性,二者不是同一类参数,所以代码始终读不到你传入的值,只能使用默认的./infrastructure。
两种修改方案
方案一:修改代码读取JVM系统属性
把代码里的System.getenv()替换成System.getProperty(),这样就能读取到-D传递的参数:
private static final String workingDirectory = System.getProperty("infrastructurePath") == null ? "./infrastructure" : System.getProperty("infrastructurePath");
修改后,你原来的Gradle命令无需改动,即可正常获取传入的./infrastructure-localtests。
方案二:修改Gradle命令传递环境变量
如果不想改动代码,可在CMD中先设置环境变量再执行Gradle命令:
set infrastructurePath=./infrastructure-localtests .\gradlew --info :testModule:testInfrastructure
这样代码里的System.getenv()就能读取到你设置的环境变量值。
内容的提问来源于stack exchange,提问作者Ravish Rawat
相关产品推荐
相关产品推荐

