我正在尝试创建我的第一个Gradle插件.
1.添加属性扩展:project.extensions.create("abc", AbcExtension)
2.定义复制任务.当我按照以下方式定义任务时
project.task("abcTask", type: Copy) {
from project.abc.fromPath
into project.abc.intoPath
}
Run Code Online (Sandbox Code Playgroud)
project.abc.fromPath等于AbcExtension.fromPath值 - 它不读取值build.gradle.
当我按照以下方式定义任务时
project.task("abcTask", type: Copy) << {
from project.abc.fromPath
into project.abc.intoPath
}
Run Code Online (Sandbox Code Playgroud)
它始终打印UP-TO-DATE,不运行任务.
请解释一下这种行为并告诉我在Gradle插件中定义任务的正确方法是什么(带有type和dependsOnfunctionallity)
Pet*_*ser 12
插件必须推迟每次读取可变构建模型值(即可以从构建脚本设置的任何内容),直到至少结束配置阶段.有几种方法可以实现这一目标.其中包括:
Copy.from)project.afterEvaluate {}或的回调gradle.projectsEvaluated {}为手头的工作选择最佳选择需要一些专业知识.(这可能有助于研究Gradle代码库中的一些插件.)在您的情况下,我可能会执行以下操作:
project.task("abcTask", type: Copy) {
from { project.abc.fromPath }
into { project.abc.intoPath }
}
Run Code Online (Sandbox Code Playgroud)
您的<<版本不起作用,因为它Copy太晚配置任务.一般来说,所有配置都应该在配置阶段进行,而不是在执行阶段进行.您可以在Gradle用户指南中了解有关Gradle构建阶段的更多信息.
| 归档时间: |
|
| 查看次数: |
5699 次 |
| 最近记录: |