可以通过将Gradle与ProcessBuilder的正确用法相结合来解决此问题。请参考以下示例代码:
List<String> command = new ArrayList<>();
command.add("./gradlew"); //指定Gradle可执行文件路径
command.add("assembleDebug"); //向Gradle传递参数
ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new File(projectDir)); //指定Gradle项目目录
Process process = builder.start();
StreamGobbler streamGobbler = new StreamGobbler(process.getInputStream(), System.out::println);
Executors.newSingleThreadExecutor().submit(streamGobbler);
int exitCode = process.waitFor();
assert exitCode == 0; //如果不是零,表示任务失败
在这里,通过将Gradle可执行文件路径指定为参数传递给ProcessBuilder来调用Gradle。然后可以在ProcessBuilder中设置项目目录,并执行waitFor()以等待进程完成。如果有输出,它将由streamGobbler捕获并输出。最后,我们可以检查exitCode以确保Gradle任务成功。