gpt4 book ai didi

plugins - 在任何编译执行时调用Gradle自定义任务

转载 作者:行者123 更新时间:2023-12-03 06:24:48 25 4
gpt4 key购买 nike

您好,我正在编写Gradle自定义插件。

1)我正在我的插件中创建一个任务,并且我希望在调用任何编译任务时都可以调用该任务。

说用户可以调用compileJava,compileJava等

要么
2)当用户调用gradle war任务时,我可以打电话吗?而不是gradle warMyFiles

我想在任何这些编译任务上调用我的插件

我通常将任务设置为这样的插件

...
CompileMyFilesTask compileMyFiles = project.tasks.add(COMPILE_MYFILES_TASK_NAME,CompileMyFilesTask.class)
compileMyFiles.dependsOn(WarPlugin.WAR_TASK_NAME)//或JavaPlugin.COMPILE _...
compileMyFiles.description =“编译我的文件”
compileMyFiles.group =“我的文件”
...

最佳答案

我建议您看一下内部插件的gradle源代码,例如Java插件(可以在GRADLE_HOME/src/org/gradle/api/plugins/JavaBasePlugin.java上找到)

这是从那里借来的一个主意。此代码使项目中的所有编译任务都取决于您的自定义任务:

import org.gradle.api.Task;
import org.gradle.api.tasks.compile.AbstractCompile;

...

final Task yourCustomTask = ...

project.getTasks().withType(AbstractCompile.class, new Action<Task>(){
@Override
public void execute(Task compileTask){
compileTask.dependsOn(yourCustomeTask);
}
});

注意:如果您的自定义任务也是 AbstractCompile类型,则需要在循环中将其排除,以避免循环依赖。

对于 war 任务,您当前的方法似乎不错。

关于plugins - 在任何编译执行时调用Gradle自定义任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7347098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com