如何解决Gradle 懒惰的 Exec-Task 配置 问题示例测试问题
我在使用扩展属性配置 Exec-Task 时遇到问题。
问题
我的 Exec-Task 的配置依赖于在扩展中定义的 String-Property。不幸的是,在配置 Exec-Task 时,该属性尚未设置。这导致TaskCreationException
:
Could not create task ':myTask'.
org.gradle.api.internal.tasks.DefaultTaskContainer$TaskCreationException: Could not create task ':myTask'.
...
Caused by: org.gradle.api.internal.provider.MissingValueException: Cannot query the value of extension 'myConfig' property 'command' because it has no value available.
at org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:86)
示例
abstract class ConfigExtension() {
abstract val command: Property<String>
}
class MyGradlePlugin : Plugin<Project> {
override fun apply(project: Project) {
val myConfig = project.extensions.create(
"myConfig",ConfigExtension::class.java
)
val myTask = project.tasks.register(
"myTask",Exec::class.java
) {
it.commandLine(myConfig.command.get())
}
}
}
问题似乎是绕过惰性求值的 myConfig.command.get()
。
测试
@Test fun `plugin registers task`() {
// Create a test project and apply the plugin
val project = ProjectBuilder.builder().build()
project.plugins.apply("com.example.plugin")
// Verify the result
assertNotNull(project.tasks.findByName("myTask"))
}
问题
有没有办法像配置gradle任务那样以懒惰的方式配置commandLine
-Value? [1] [2]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。