如何在IntelliJ IDEA同步时触发自定义Gradle任务?
如何在IntelliJ IDEA打开项目或点击「同步」按钮后自动执行Gradle任务?
我想在用户打开IntelliJ IDEA项目,或者点击IDE里的「同步」按钮后,自动执行指定的Gradle任务,但目前找不到可靠的实现方式——因为IDEA同步时不会触发常规的Gradle任务执行流程。
我试过以下方法:
// build.gradle // 文件中只有以下内容 tasks.create("asd") { doLast { println("ASD") } doFirst { println("ASD") } } tasks.all { Task task -> task.dependsOn(tasks.named("asd").get()) }
点击同步按钮后,只得到如下输出:
BUILD SUCCESSFUL in 118ms
我找到一个临时方案:通过检查IDEA同步时添加的系统属性,修改Gradle启动参数来触发任务,代码如下:
class LocalPropertiesPlugin implements Plugin<Project> { @Override public void apply(@NotNull Project target) { Idea.scheduleTaskAfterIDEASync(target, "mytask"); } private static void scheduleTaskAfterIDEASync(Project target, String taskName) { if (isIdeaSync()) modifyGradleStartParameters(target, taskName); } private static void modifyGradleStartParameters(Project target, String taskName) { final StartParameter startParameter = target.getGradle().getStartParameter(); System.out.println(startParameter); final List<TaskExecutionRequest> taskRequests = new ArrayList<>(startParameter.getTaskRequests()); taskRequests.add(new DefaultTaskExecutionRequest(List.of(taskName))); startParameter.setTaskRequests(taskRequests); } private static boolean isIdeaSync() { return Boolean.parseBoolean(System.getProperty("idea.sync.active", "false")); } }
但这个方案看起来不够理想且不可靠,请问正确的实现方式是什么?
内容的提问来源于stack exchange,提问作者RareScrap
相关产品推荐
相关产品推荐

