我想用带有自定义工作目录的gradle run
执行一个Java类。根据我对文档的阅读,只需执行gradle run -PworkingDir=<mydir>
应该可以解决问题,但是它不起作用,工作目录仍然是项目目录。
我正在使用gradle run
作为简单测试脚本的一部分。
从技术上讲,可以通过创建自定义run
任务来做到这一点:
task run(dependsOn: classes, type: JavaExec) { main = project.hasProperty('mainClass') ? project.mainClass : '' classpath = sourceSets.main.runtimeClasspath standardInput = System.in if (project.hasProperty('runWorkingDir')) { workingDir = new File(project.runWorkingDir) } }
在这种情况下,您可以指定
-PrunWorkingDir=<my-working-dir>
。显而易见的警告是,您也必须在调试时执行此操作,并且可能还必须再次为“ Run Single”和“ Debug Single”指定工作目录。但是,我在考虑允许添加一组变量,而不是为工作目录添加项目属性。在这种情况下,您只需指定一次工作目录,然后只需编写“ -PrunWorkingDir = $ {run-working-dir}”。另外,内置的运行任务可以支持“ runWorkingDir”属性。