groovy – 如何为新任务类型扩展Gradle任务的行为?
发布时间:2020-12-14 16:24:55 所属栏目:大数据 来源:网络整理
导读:我想为一些测试任务设置一些东西.更具体地说,我想添加一些环境变量和一些系统属性,可能还有一些其他的东西,比如“dependencies”或“workingDir”.通过常规测试任务,我可以做到这一点, task test1(type:Test,dependsOn:[testPrep,testPrep1]){ workingDir te
我想为一些测试任务设置一些东西.更具体地说,我想添加一些环境变量和一些系统属性,可能还有一些其他的东西,比如“dependencies”或“workingDir”.通过常规测试任务,我可以做到这一点,
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扩展常规的Test任务类型,定义了通用定义,那就太好了. task test1(type:MyTestType){ dependsOn testPrep1 } task test2(type:MyTestType){ systemPropety 'newProperty','fdsjfkd' } 最好的方法是什么?似乎execute()方法是final,无法扩展.我需要做一些类似doFirst的设置这些属性.我应该在构造函数中添加所有额外的值吗?我可以使用其他任何钩子吗?谢谢. 解决方法
通常,您可以扩展“测试”任务并实现自定义
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' } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |