Plugins 在Gradle插件中定义任务的正确方法是什么?
我正在尝试创建我的第一个Gradle插件。Plugins 在Gradle插件中定义任务的正确方法是什么?,plugins,gradle,Plugins,Gradle,我正在尝试创建我的第一个Gradle插件。 1.为属性添加扩展:project.extensions.create(“abc”,AbcExtension) 2.定义复制任务。当我以下面的方式定义任务时 project.task("abcTask", type: Copy) { from project.abc.fromPath into project.abc.intoPath } project.task("abcTask", type: Copy) << { fro
1.为属性添加扩展:
project.extensions.create(“abc”,AbcExtension)
2.定义复制任务。当我以下面的方式定义任务时
project.task("abcTask", type: Copy) {
from project.abc.fromPath
into project.abc.intoPath
}
project.task("abcTask", type: Copy) << {
from project.abc.fromPath
into project.abc.intoPath
}
project.abc.fromPath等于AbcExtension.fromPath
value-它不从build.gradle
读取值当我以下面的方式定义任务时
project.task("abcTask", type: Copy) {
from project.abc.fromPath
into project.abc.intoPath
}
project.task("abcTask", type: Copy) << {
from project.abc.fromPath
into project.abc.intoPath
}
project.task(“abcTask”,type:Copy)插件必须将每次读取可变的构建模型值(即可以从构建脚本设置的任何内容)推迟到至少配置阶段结束。有几种方法可以实现这一目标。其中包括:
- 使用接受闭包作为值的Gradle API(例如,
Copy.from
)
- 使用回调,如
project.afterEvaluate{}
或gradle.projectsEvaluated{}
- 使用约定映射机制(请注意,这不是公共特性)
为手头的工作选择最佳方案需要一些专业知识。(研究中的一些插件可能会有所帮助。)在您的情况下,我可能会执行以下操作:
project.task("abcTask", type: Copy) {
from { project.abc.fromPath }
into { project.abc.intoPath }
}
你的这个问题也帮了我很多忙