如何解决使用Gradle Project API测试插件,而不是创建临时目录
测试Gradle插件的典型方法是通过创建一个包含build.gradle
文件和settings.gradle
文件的临时目录(请参见其TestKit guide),然后将该临时目录提供为GradleRunner
的参数。
例如,如果要测试其插件是否具有特定任务,他们可以像这样使用Project
API:
val project = ProjectBuilder.builder().build()
project.pluginManager.apply("your.plugin.id")
assert(project.tasks.getByName("customTaskName") is CustomTask)
Project
提供诸如projectDir
和buildFile
之类的属性。正如Project
文档中的生命周期section所述,
项目与项目之间存在一对一的关系 build.gradle文件。在构建初始化期间,Gradle会组装一个 参与构建的每个项目的项目对象, 如下:
[生命周期的前三个步骤,涉及设置]
最后,通过执行每个build.gradle文件来评估每个Project, 如果存在,则反对该项目。这些项目在 广度顺序,这样一个项目在其子项目之前进行评估 项目。可以通过调用覆盖此顺序 Project.evaluationDependsOnChildren()或通过添加显式 评估依赖使用 Project.evaluationDependsOn(java.lang.String)。
一个使这个说明是否建议使用Project
来实际运行构建和/或执行任务的人感到奇怪。它可以与GradleRunner
一起使用,而不是与临时目录一起使用吗?如果不是,那么在Project
的上下文中评估是什么意思,它是如何触发的(此类没有任何evaluate()
方法)?
我真正需要的是测试Gradle插件。我需要为该插件使用自定义扩展名,为其属性分配值,然后运行一个使用该扩展名的任务并检查结果。我可以用标准的临时目录方式执行此操作,但我想知道是否还有其他方法(如果有,很可能在文档中已经提到过,但是谁知道?)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。