gpt4 book ai didi

groovy - 如何为新任务类型扩展 Gradle 任务的行为?

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

我想为一些测试任务设置一些东西。更具体地说,我想添加一些环境变量和一些系统属性,也许还有一些其他的东西,例如“依赖项”或“workingDir”。使用常规 Test任务我能做到,

task test1(type:Test, dependsOn:[testPrep,testPrep1]){
workingDir testWorkingPath
systemProperty 'property','abs'
environment.find { it.key ==~ /(?i)PATH/ }.value += (System.properties['path.separator'] + myLibPath)
environment.LD_LIBRARY_PATH = "/usr/lib64:/lib64:${myLibPath}:" + environment.LD_LIBRARY_PATH
}

task test2(type:Test, dependsOn:[testPrep]){
workingDir testWorkingPath
systemProperty 'property','abs'
environment.find { it.key ==~ /(?i)PATH/ }.value += (System.properties['path.separator'] + myLibPath)
environment.LD_LIBRARY_PATH = "/usr/lib64:/lib64:${myLibPath}:" + environment.LD_LIBRARY_PATH
systemPropety 'newProperty','fdsjfkd'
}

有一个新的任务类型会很好 MyTestType扩展常规测试任务类型,其中定义了通用定义。
task test1(type:MyTestType){
dependsOn testPrep1
}

task test2(type:MyTestType){
systemPropety 'newProperty','fdsjfkd'
}

最好的方法是什么?似乎 execute()方法是最终的,不能扩展。我需要做一些类似 doFirst 的事情设置这些属性。我应该在构造函数中添加所有额外的值吗?我可以使用其他任何钩子(Hook)吗?谢谢。

最佳答案

一般来说,您可以扩展“测试”任务并实现您的自定义

task test1(type:MyTestType){
}

task test2(type:MyTestType){
systemProperty 'newProperty','fdsjfkd'
}

class MyTestType extends Test {
public MyTestType(){
systemProperty 'property','abs'
}
}

或者,您可以配置 Test 类型的所有任务样板更少:
// will apply to all tasks of type test. 
// regardless the task was created before this snippet or after
tasks.withType(Test) {
systemProperty 'newProperty','fdsjfkd'
}

关于groovy - 如何为新任务类型扩展 Gradle 任务的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29948381/

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