在工作中也遇到了这个问题,但是我觉得stackoverflow的这个解法不对
https://stackoverflow.com/questions/49372067/cannot-add-task-jacocotestreport-as-a-task-with-that-name-already-exists
这个问题的本质应该是,创建了已经存在的task,通俗点,方法名重复了。
原本期望是给每个编译类型的task都动态创建一个jacocoTask(这里jacocoTask是jacoco插件原本的名字哈)
image.pngcreateJacocoTask这个方法里,就def了一个新的task,叫做jacocoTestReport,
(我的业务代码就不放了,定义基本与stackoverflow的这个一样)
image.png
bug原因就在这里了,每个variant都要创建task,至少有debug跟release两个variant,那么就导致存在两个jacocoTestReport。
解法1:动态创建方法名,避免重名。
def taskName = "jacocoTestReport${variantName.capitalize()}"
tasks.create(name: "${taskName}", type: JacocoReport)
解法2:减少variant,其实我们只需要关注debug,本质上只需要创建1个task就好了。(推荐)
网友评论